最適化(Delphi)
Delphi コンパイラ指令のリスト:インデックス への移動
種類 |
スイッチ |
構文 |
{$O+} または {$O-} {$OPTIMIZATION ON} または {$OPTIMIZATION OFF} |
デフォルト |
{$O+} {$OPTIMIZATION ON} |
スコープ |
ローカル(DCCIOSARM コンパイラと DCCIOSARM64 コンパイラの場合はグローバル) |
$O 指令はコードの最適化を制御するものです。{$O+} 状態の場合、コンパイラはいくつものコード最適化を実行します。たとえば、CPU レジスタへの変数の格納、共通の部分式の削除、誘導変数の生成などです。{$O-} 状態では、このような最適化はすべて無効になります。
特定のデバッグ状況以外では、最適化を無効にする必要はないはずです。Delphi コンパイラで実行されるどの最適化の場合も、プログラムの意味は絶対に変更されません。つまり、プログラマが特に注意しなければならないような "安全でない" 最適化はコンパイラでは行われません。
メモ:
- $O 指令では、手続きまたは関数全体について最適化の有効/無効を切り替えることができるだけです。ルーチン内の 1 行または複数行について、最適化を有効または無効にすることはできません。
- 32 ビット iOS デバイスをターゲットとする(したがって DCCIOSARM コンパイラを使用する)iOS アプリケーションの場合、および 64 ビット iOS デバイスをターゲットとする(したがって DCCIOSARM64 コンパイラを使用する)iOS アプリケーションの場合、$O 指令のスコープはグローバルです。単一のソース コード ファイルに $O オプションが複数存在していても、コンパイラからは警告やヒントのメッセージは出力されず、オプティマイザでは最後の設定が使用されます。
- 一方、iOS シミュレータをターゲットとする(かつ、DCCIOS32 コンパイラを使用する)iOS アプリケーションの場合は、Delphi デスクトップ コンパイラの場合と同じように、$O 指令のスコープはローカルになります。