n には 1、2、3、4、5 のいずれかを指定します。-O と n の間には空白文字を入れないでください。
-O[n] の指定がない場合は、基本的な最適化のレベルは、局所的な共通部分式の除去、および不要コードの分析だけに限られます。プログラムのパフォーマンスは、最適化なしの場合よりも、特定の最適化レベルを指定してコンパイルした方が、大幅に改善されることがあります。通常のプログラムには、-O (レベル -O3) または -fast (レベル -O5) を使用することをお勧めします。
-On の各レベルには、それよりも低いレベルでの最適化が含まれています。一般に、プログラムのコンパイル時の最適化レベルが高いと、実行時のパフォーマンスも向上します。ただし、最適化レベルを高くすると、コンパイル時間が長くなり、実行可能ファイルのサイズが大きくなります。
-g を使用するデバッグは -On を抑制しませんが、-On は -g のいくつかの機能を制限します。dbx に関するドキュメントを参照してください。
-O3 と -O4 のオプションでは、dbx から変数を表示できないという点で、デバッグ機能が制限されますが、dbx where コマンドを使用してシンボルを追跡することができます。
オプティマイザがメモリーを使い切ると、レベルを下げて最適化をやり直します。以降のルーチンでは元のレベルに戻ってコンパイルを行います。
最適化についての詳細は、『Fortran プログラミングガイド』の「パフォーマンスプロファイリング」と「パフォーマンスと最適化」の章を参照してください。
-O3 と同義です。
文レベルの最小限の最適化を行います。
高いレベルの最適化では、コンパイル時間が長すぎる場合、またはスワップ領域を超えている場合に使用します。
基本ブロックレベルの最適化を行います。
通常、生成されるコードのサイズがもっとも小さくなります (-xspace も参照。)
-O3 を使用すると、コンパイル時間が長すぎる場合、スワップ領域を超えている場合、または生成される実行可能ファイルのサイズが大きすぎる場合には -O2 を使用します。これ以外の場合は、-O3 を使用してください。
関数レベルで、ループを展開し大域的に最適化を行います。-depend を自動的に追加します。
通常、-O3 では生成される実行可能ファイルのサイズが大きくなります。
同じファイル内にあるルーチンの自動インライン化を追加します。
インライン化が行われるため、-O4 では、生成される実行可能ファイルのサイズが通常大きくなります。
-g オプションを指定すると、前に説明した -O4 による自動的なインライン化は行われません。–xcrossfile を使用すると、-O4 によるインライン化の範囲が拡張されます。
最高レベルの最適化を試行します。
プログラムの中で、全体の計算時間のうちの最大部分を消費する部分に限って適用してください。-O5 の最適化アルゴリズムは、ソースプログラム中でこのレベルを適用する部分が大きすぎると、コンパイルに時間がかかり、パフォーマンスが低下する場合もあります。
プロファイルのフィードバックと併せて使用すると、最適化がパフォーマンスの向上につながる可能性が高まります。-xprofile=p を参照してください。