最適化レベル
このセクションの内容:
コンパイラでは、さまざまな最適化のレベルをサポートしています。 以下の表は、各レベルで一般的に実行される最適化の一覧です。
最適化レベル | 説明 |
|---|---|
なし(デバッグサポートに最適) | |
低 | 上記と同じですが、変数は必要時のみ有効となり、スコープ全体を通して有効とは限りません。 |
中 | 上記のほかに以下があります。 一部のレジスタ内容の解析と最適化 共通部分式除去 コード移動 静的クラスタ |
高(バランス) | 上記のほかに以下があります。 命令スケジューリング クロスジャンプ 詳細なレジスタ内容の解析と最適化 ループ展開 関数インライン化 型ベースエイリアス解析 |
表91 コンパイラ最適化レベル
注記
一部の最適化は、個別に有効化/無効化が可能です。詳細については、変換の微調整を参照してください。
最適化レベルを高くするとコンパイル時間が長くなることがあり、また、生成されたコードとソースコードの関係がわかりにくくなるため、デバッグも困難になります。たとえば、最適化レベルの低、中、高の場合、変数がスコープ全体を通して有効とは限らないため、変数の格納に使用されたプロセッサレジスタは、最後に使用された状態のままで再使用される可能性があります。このため、C-SPYのウォッチウィンドウには、スコープ全体を通した変数の値が表示できない、または間違った値を表示することがあります。コードのデバッグが困難な場合は、最適化レベルを下げてください。