Declaration OPTIMIZE

UP


Declaration OPTIMIZE

構文

(optimize {quality | (quality value)}*)

引数

quality - 最適化の性質
value - 次の整数のうちのひとつ、0, 1, 2, 3

有効な文脈

declareproclaim

影響する束縛の型

なし。

定義

コンパイラーに対して、各qualityが対応する値valueで指定されたことの 注意を促すように知らせます。 各qualityは最適化の性質の名前のシンボルである必要があります。 その名前である標準の最適化の性質を次の表に表します。

名前 意味
compilation-speed コンパイル処理の速度
debug デバッグのやりやすさ
safety 実行自エラーチェック
space コードサイズと実行時空間の両方
speed コードの速度

Figure 3-25. 最適化の性質

他にも実装定義の最適化の性質が存在します。

0は対応するqualityが全体的に重要ではないことを意味します。 値3qualityが非常に重要であることを意味します。 値12はその中間の値であり、値1が標準の値です。 (quality 3)は省略してqualityと記載できます。

最適化(safety 3)かただsafetyと指定したコードは、 安全なコードと呼ばれます。

qualityが複数違う値で現れたときの結果は指定されていません。

例文

(defun often-used-subroutine (x y)
  (declare (optimize (safety 2)))
  (error-check x y)
  (hairy-setup x)
  (do ((i 0 (+ i 1))
       (z x (cdr z)))
      ((null z))
    ;; この内部ループは本当に燃やす必要があります。
    ;; (高負荷という意味)
    (declare (optimize speed))
    (declare (fixnum i))
    ))

参考

declare, declaim, proclaim, 3.3.4. 宣言のスコープ

備考

optimize宣言は、決して変数束縛にも関数束縛にも適用しません。 optimize宣言は自由宣言にのみ使用できます。 詳細は3.3.4. 宣言のスコープをご確認ください。


TOP, Github