次の表は、-O0、-O1、-O2、-O3、および -fast オプションの効果を説明したものです。表は最初に IA-32 アーキテクチャと Itanium® アーキテクチャの両方で共通の特性を説明し、次に -On オプションおよび -fast オプションの動作の詳細を (ある場合) アーキテクチャ別に説明します。
オプション |
効果 |
---|---|
-O0 |
-On で指定した最適化を無効にします。IA-32 システムではこのオプションを指定すると -fp オプションが設定されます。 |
-O1 |
好ましいコードサイズとコードの局所性に最適化します。 |
-O2, -O |
デフォルトの最適化オプションです。ただし、-g が指定されている場合、-O0 がデフォルトになります。 IA-32 システムではこのオプションは -O1 オプションと同じ動作をします。 Itanium ベース・システム: これらのシステム上で -O2 オプションを使用すると、組込み関数のインライン展開が有効になります。また、パフォーマンスの向上のために次の機能も有効にします: 定数伝播、コピー伝播、不要コードの排除、グローバル・レジスタ割り当て、グローバル命令スケジューリング、スペキュレーション・コントロール、ループのアンロール、コード選択の最適化、部分冗長の排除、ストレングス・レダクション/誘導変数の簡略化、変数名の変更、例外処理の最適化、末端再帰、ピープホールの最適化、構造体代入の低下および最適化、不要ストアの排除の各機能が使用されます。 |
-O3 |
-O2 の最適化を有効にし、それに加えてプリフェッチ、スカラ置換、ループ変換、およびメモリのアクセス変換のような、さらに強力な最適化も有効にします。最大実行速度に最適化を行いますが、ループ変換およびメモリアクセス変換が行われない限り、パフォーマンスが向上しない場合があります。-O3 の最適化はコードによっては -O2 の最適化よりも遅くなります。このオプションは、浮動小数点演算を多く使用するループや大きなデータセットを処理するループを含むアプリケーションに推奨します。 Itanium ベース・システムでは、技術計算を行うアプリケーション (ループを多用するコード) の最適化、つまりループとデータ・プリフェッチの最適化を有効にします。 |
-fast |
このオプションは、ランタイム・パフォーマンスを向上させる最適化機能一式をすべて有効にする、簡単な方法です。このオプションを指定すると、ランタイム・パフォーマンスの向上につながる次の各オプションが設定されます。 -O3: 最高速で高レベルの最適化 (上記参照) -ipo: 複数ファイルにわたるプロシージャ間の最適化を有効にします -static: 共有ライブラリとリンクしないようにします IA-32 およびインテル® エクステンデッド・メモリ 64 テクノロジ (インテル® EM64T) システムでは、-fast でこれらのオプションと -xP が設定されます。 いくつかの重要なコンパイラ最適化機能を一度に設定するよう指示します。-fast によって設定されたオプションを上書きするには、コマンドラインから -fast オプションの後に使用するオプションを指定してください。 -fast で設定されるオプションは、バージョンによって変更になる場合があります。 IA-32 システム: |