Common Lisp の効率的なファイル読み込み

Common Lisp でファイルを読み込む方法は Slurping a file in Common Lisp が参考になる。指定したファイルを読み込み、バッファ (配列) を返す関数はこんな感じ。実測はしていないが Perl スクリプト以上の速度が出るらしい。

1
2
3
4
5
(defun read-file (path)
(with-open-file (in path)
(let ((seq (make-array (file-length in) :element-type 'character :fill-pointer t)))
(setf (fill-pointer seq) (read-sequence seq in))
seq)))