最適化を行うと、コンパイル時間は長くなりますが、通常は、実行時間は 短くなります。 XL Fortran を使用すれば、最適化をコンパイル時に実行したいかどうかを 選択することができます。 デフォルトでは、コンパイラーは非常に限定された最適化を 実行します (-O0 または -qnoopt)。
コンパイラーの最適化を使用可能にするには、-O コンパイラー・オプションと、レベルを示す数字を指定してください。
下の表は、それぞれの最適化レベルにおけるコンパイラーの動作を要約したものです。
最適化レベル | |
オプション | 動作 |
---|---|
-qnoopt/-O0 | コンパイルは高速、コードはデバッグ可能、プログラム・セマンティクスは保持される。 |
-O2 (-O と同じ) | 包括的な低レベルの最適化。部分的デバッグがサポートされる。 |
-O3 | より広範囲な最適化。一部の精度がトレードオフされる。 |
-O4 および -O5 | プロシージャー間の最適化。ループ最適化。自動マシン・チューニング。 |
最適化レベル -O2 (-O と同じ) では、コンパイラーは 包括的な低レベル最適化を実行します。 これには以下の技法が含まれます。
最適化レベル -O2 での 最小デバッグ情報 は、以下の動作から構成されます。
最適化レベル -O3 では、コンパイラーは -O2 よりもさらに 幅広い最適化を実行します。 最適化は、次のようにして拡大され掘り下げられます。
-qnostrict の暗黙設定により、以下のような精度のトレードオフがコンパイラーによって 行われます。
-O3 最適化は以下を行います。
実行時パフォーマンスが非常に重要な要因であり、マシン・リソースが余分なコンパイル時の動作に適応できる 場合は、-O3 オプションを使用してください。
実行される正確な最適化は、次のような多数の要因によって決まります。
最適化レベル -O2 と -O3 を使用するための推奨アプローチは以下のとおりです。
サブルーチン・パラメーターが別名割り当て規則に準拠していることを確認してください。
最適化レベル -O4 と -O5 は、自動的に他のいくつかの最適化オプションを活動化します。 最適化レベル -O4 には以下が含まれます。
最適化レベル -O5 には以下が含まれます。
-O5 をコンパイル・ステップで指定する場合は、リンク・ステップでも指定する必要があります。 -qipa オプションは厳密に言って最適化レベルではありませんが、 これは最適化をすべてのプロシージャーに拡張します (プロシージャーが別のファイルにある場合も)。 また、このオプションは他の最適化オプション、特に -O (任意のレベルで) によって行われた最適化の効率を高めます。 また、本質的にコンパイルの時間を長くする可能性があるので、すでにデバッグしてあって、使用する準備が できているアプリケーションを調整する場合などに使用できます。 Fortran と、IBM XL C/C+ コンパイラーでコンパイルした C または C++ コードの組み合わせがアプリケーションに 含まれている場合、-O5 オプションを指定してコードすべてを コンパイルおよびリンクして、追加の最適化を実行することができます。