最適化レベルの設定

次の表は、-O0-O1-O2-O3、および -fast オプションの効果を説明したものです。表は最初に IA-32 アーキテクチャと Itanium® アーキテクチャの両方で共通の特性を説明し、次に -On オプションの動作の詳細を (ある場合) アーキテクチャ別に説明します。

オプション 効果
-O0 最適化を無効にします。
-O1 好ましいコードサイズとコードの局所性に最適化します。ループのアンロールを無効にします。任意の分岐および実行時間がループ内のコードに支配されない、非常に大きなコードサイズのアプリケーションでパフォーマンスが向上します。ほとんどの場合は、-O1 よりも -O2 を推奨します。
IA-32 システム:
コードサイズを減らす組込み関数のインライン化を無効にします。
Itanium ベース・システム:
ソフトウェアのパイプライン化とグローバル・コード・スケジューリングを無効にします。
-O2, -O デフォルトでは、このオプションがオンになっています。速度について最適化します。一般的に推奨される最適化レベルです。
Itanium ベース・システム:
ソフトウェアのパイプライン化を有効にします。
-O3 -O2 オプションに、ループやメモリアクセス変換などの最適化項目を加えて最適化を実行します。-O3 の最適化はコードによっては -O2 の最適化よりも遅くなります。このオプションは、浮動小数点演算を多く使用するループや大きなデータセットを処理するループを含むアプリケーションに推奨します。
IA-32 システム:
-ax{K|W|N|B|P}-x{K|W|N|B|P} オプションと組み合わせると、コンパイラは -O2 よりも詳細にデータの依存性を分析します。そのためコンパイル時間が長くなる場合があります。
-fast -fast オプションは、実行時のパフォーマンスを向上させる次のオプションを含めることで、プログラム全体にわたって実行速度を上げます:
  • -O3 (最高速で高レベルの最適化)
  • -ipo (複数ファイルにわたるプロシージャ間の最適化を有効にします)
  • -static (共有ライブラリとリンクしないようにします)
  • -xP (インテル® Pentium® 4 プロセッサ (ストリーミング SIMD 拡張命令 3 対応) を最適化の対象とします)。Itanium ベース・システムでコンパイルする場合、-fast オプションには -xP は含まれません。
-fast で設定されるオプションの 1 つを無効にするには、コマンドラインで -fast オプションの後に無効にするオプションを指定します。特定のプロセッサ用に -fast の最適化を行うには、-x オプションのうちの 1 つを使用してください。次に例を示します:

prompt>icpc -fast -xW source_file.cpp

-fast で設定されるオプションは、バージョンによって変更される場合があります。