最適化レベル:/optimize オプション

Visual Fortran は,省略時にさまざまな最適化を実行します。これらの最適化は,プログラムのコードを変更しなくても利用することができます。しかし,最適化がどのように働くかを理解しておけば,その動作を妨げるような要素をプログラムから取り除いておくことができます。

コンパイル時に実行,削除,または単純化できる演算があった場合,Visual Fortran は実行時にではなく,コンパイル時にその演算を行います。より多くの最適化が適用されるに従い,プログラムのコンパイルに要する時間は一般に増大します。

/optimize:4 でコンパイルを行うと,それよりも低いレベルの最適化でプログラムをコンパイルしたときよりもプログラムの実行速度は一般に高くなりますが,コンパイルに要する時間は長くなります。

オブジェクト・ファイルの大きさは,どのような最適化を要求したかによって異なります。オブジェクト・ファイルの大きさを増やす要因には,ループ展開や手続のインライン展開などがあります。

次表は,Compaq Fortran の各種の /optimize:num オプションでの最適化レベルを示しています。たとえば,/optimize:0 は選択可能な最適化をまったく使用しないことを指定します。一部の最適化はつねに実行されます。/optimize:5 を使用すると,そのアーキテクチャーで利用できるすべての最適化レベルを指定することができます。ia32 システムでの /optimize:5 にはループ変換が含まれます。ia64 システムでの /optimize:5 には,ループ変換とソフトウェア・パイプラインが含まれます。

各種の /optimize:num オプションでの最適化レベル

最適化の形式 /optimize:0 /optimize:1 /optimize:2 /optimize:3 /optimize:4 /optimize:5
ソフトウェア・パイプライン           x (ia64 のみ)
ループ変換           x
自動インライン展開         x x
付加的な大域的な最適化       x x x
大域的な最適化     x x x x
局所的な (最小限の) 最適化   x x x x x

コマンド行と「Release」構成のビジュアル開発環境の基本レベルは,/optimize:4 です。「Debug」構成のビジュアル開発環境の基本レベルは,/optimize:0 です。ただし,/debug が指定されていると,基本レベルは /optimize:0 (最適化なし) になります。

上表では,最適化のレベルの説明に次の用語を使用しています。これらの用語については,後の節で詳しく説明しています。

次に示す節では,I/O 性能の注意事項を詳しく説明しています。