構文:
/optimize[:level],/nooptimize,/Od,/Ox,または /Oxp
/optimize オプションは,コンパイラが実行する最適化レベルを制御します。実行時性能を向上させるために,Visual Fortran は実行時間の短縮を優先させ,コンパイル時間を長くしています。何らかの演算をコンパイル時に実行,削除,または単純化できるのであれば,コンパイラはそれを実行時に行うのではなく,コンパイル時に行ってしまいます。また,(ループ展開やインライン展開される手続を増やすなどの) 一部の最適化では,オブジェクト・ファイルの大きさも通常は増大します。
ビジュアル開発環境では,「Fortran」タブの「General」または「Optimizations」カテゴリの「Optimization Level」を指定します。
次に /optimize のオプションを示します。
/optimize:0 または /Od | /optimize:1 |
/optimize:2 | /optimize:3 |
/optimize:4,/Ox,および /Oxp | /optimize:5 |
ほぼすべての最適化を無効にします。これは,(キーワードなしで) /debug を指定したときの基本設定です。このオプションを指定すると,一部の /warn オプションは無視されます。/Od を指定すると,/optimize:0 オプションと /math_library:check オプションが設定されます。
プログラム単位中での局所的な最適化,共通部分式の認識,および整数の乗算と除算 (けた移動を使った) の展開を有効にします。
大域的な最適化を有効にします。これにはデータ・フロー解析,コード移動,ストレングス・リダクションと検証置換,スプリット・ライフタイム解析,および命令スケジューリングが含まれます。/optimize:2 には,/optimize:1 によって実行される最適化が含まれます。
速度を向上させる大域的な最適化を (コードの大きさの増大と引き換えに) 追加します。これらの最適化には次のものが含まれます。
命令スケジューリングを含むループ展開
飛越しを削除するためのコード模写
キャッシュをより効率的に使用するための特定の 2 のべき乗の配列充填 (「配列の効率的な使用」を参照)
/optimize:3 には,/optimize:1 と /optimize:2 によって実行される最適化が含まれます。
手続間の解析と,小さな手続の自動的なインライン展開 (追加されるコード量の自動制限付き) を有効にします。/optimize:4 には,/optimize:1,/optimize:2,および /optimize:3 によって実行される最適化が含まれます。DF コマンドでは,(キーワードなしで) /debug を指定しない限り,/optimize:4 が基本設定です。
/Ox を指定すると,/optimize:4,/math_library:check,および /assume:nodummy_aliases が設定されます。
/Oxp を指定すると,/optimize:4,/math_library:check,/assume:nodummy_aliases,および /fltconsistency (ia32 システム) が設定されます。
ia32 システムでは,ループ変換の最適化 (これは /transform_loops でも設定されます) を有効にします。ia64 システムでは,ループ変換の最適化 (これは /transform_loops でも設定されます) と,ソフトウェア・パイプライン最適化 (これは /pipeline でも設定されます) を有効にします。
ループ変換の最適化には,ループのブロック化,ループ分散,ループ結合,ループ交換,ループのスカラ置換,および外側のループ展開が含まれます。ソフトウェア・パイプラインなしのループ変換の最適化を指定することができます (「/[no]transform_loops」を参照)。
ループ変換の最適化なしのソフトウェア・パイプラインを指定することができます (「/[no]pipeline (ia64 のみ)」を参照)。
/optimize:5 が特定のプログラムにとって有利であるかどうかを判断するには,レベル /optimize:4 と /optimize:5 でコンパイルした同じプログラム (または副プログラム) のプログラム実行のタイミングを比較してください。
/optimize:5 には,/optimize:1,/optimize:2,/optimize:3,および /optimize:4 によって実行される最適化が含まれます。
これらの最適化についての詳細は,「最適化レベル:/optimize オプション」を参照してください。
プログラミングのタイミングについては,「プログラム性能の解析」を参照してください。
アプリケーションを,実行時性能が向上するようにコンパイルする方法については,「適切なオプションと複数のソース・ファイルのコンパイル」を参照してください。