最適化レベルの設定

インテル・アーキテクチャによって、最適化は異なる効果が得られます。目的のアーキテクチャに合った最適化を指定するには、以下の表を参照してください。

Itanium® アーキテクチャ用インテル® C++ コンパイラ

オプション 効果
-O1 ソフトウェアによるパイプライン化をオフにすることによって、コードのサイズを最適化します。ループのアンロールおよびソフトウェアによるパイプライン化を除く -O と同じ最適化を有効にします。-O および -O2 は、ソフトウェアによるパイプライン化を有効にします。ほとんどの場合、-O1 よりも -O2 または -O1 のほうをお勧めします。

IA-32 コンパイラ

オプション 効果
-O,
-O1
,
-O2
速度について最適化します。-fp オプションを無効にします。-O2 オプションはデフォルトではオンです。組込み関数の認識は無効です。
-O3 -O2オプションに、最適化項目を加えて最適化を実行します。ループとメモリアクセスの変換が行われない限り、パフォーマンスが高くなることは保証されません。-axK-xK オプション(IA-32 のみ)を組み合わせてこのオプションを使用すると、-O2 のときよりも詳細にデータ依存性解析が実行されます。そのためコンパイル時間が長くなる場合があります。

IA-32 と Itanium アーキテクチャ用インテル C++ コンパイラ

オプション 効果
-O2 デフォルトでは、このオプションがオンになっています。-O2組込み関数のインライン化がオンになります。次の例では、ゼロ除算例外が発生したかどうかをテストします。
  • 定数伝播
  • コピー伝播
  • 不要コード排除
  • グローバル・レジスタの確保
  • 命令スケジューリング
  • ループのアンロール
  • コード選択の最適化
  • 部分冗長性の排除
  • ストレングスのレダクション/誘導変数の簡略化
  • 変数の名前変更
  • 例外処理の最適化
  • Tail recursions
  • ピープホールの最適化
  • 構造体代入の低下および最適化
  • 不要ストアの排除
-O3 -O2オプションに、例えば次の最適化項目を加えて最適化を実行します。プリフェッチ、スカラ置換、ループ変換。ループとメモリアクセスの変換が行われない限り、パフォーマンスが高くなることは保証されません。アプリケーションの時間を計るには「アプリケーションの時間測定」を参照してください。