2007/07/10

Common Lisp 最適化

optimize 宣言により最適化の仕方をコンパイラに指示できます。
標準的に指定可能なのは次のとおりです。


speed

実行時の性能

space

コードの大きさと実行時のメモリ使用量

safety

実行時のエラーチェック
compilation-speed

コンパイルの速さ

debug

デバッグのしやすさ


これら0〜3の値を指定します。0は重要ではない。3はとても重要。1は普通。2はちょっとがんばって、というところでしょうか。
これらを指定するには、declare, locally, proclaim, daclaim を使用します。

;;デバッグ用にグローバルな指定を行う
(declaim (optimize (debug 3) (safety 3)
(speed 0) (space 0) (compilation-speed 0)))

(defun fib (n)
;; 局所的な最適化
(declare (optimize (speed 3) (debug 0) (safety 0)))
(cond ((or (= n 1) (= n 2))
1)
(t
(+ (fib (1- n )) (fib (- n 2))))))

この他に型を指定する最適化もありますが、それはまた今度。

0 件のコメント: