コードサイズを最適化する手法

このセクションでは、インテル® コンパイラーの最適化機能を利用してオブジェクトと実行ファイルのサイズを小さくする方法に関するガイダンスを提供します。

最初に、パフォーマンスよりもコードサイズを優先するコンパイラー・オプションは 2 つあります。

速度よりもサイズを優先

Linux*: -Os

Windows*: /Os

このオプションは、コードサイズが増えない最適化を有効にし、O2 より小さいサイズのコードを生成します。

Os オプションはコードサイズを大きくするだけでさほどの高速化にはつながらない最適化を無効にします。

コードサイズを最小化

Linux*: -O1

Windows*: /O1

Os と比較して、O1 は一般にコードサイズを大きくするさらに多くの最適化を無効にします。O1 を指定すると、Os オプションがオンになります。

コードサイズを軽減する中間ステップとして、O1 を指定する前に、O3O2 に置換することができます。

O1 オプションは、分岐が多く、実行時間がループ内のコードに支配されない、非常に大きなコードサイズのアプリケーションでパフォーマンスを向上させます。

上記のオプションの詳細は、「コンパイラー・リファレンス」にある各オプションの説明を参照してください。

以降では、Os および O1 のデフォルトの動作と比較しても、コードサイズを向上する可能性がある手法について簡単に説明します。

次の表は、このセクションで説明しているコードサイズの最適化方法の一覧です。

インライン展開の無効化または軽減

バイナリーからのシンボルの削除

インテルが提供するライブラリーの動的リンク

実行ファイルから未使用のコードとデータの除外

組込み関数の認識と展開の無効化

Linux* システムでの例外処理データの最適化

ループアンロールの無効化

自動ベクトル化の無効化

コンパイラー固有ライブラリーの参照の回避

プロシージャー間の最適化 (IPO) の使用

上記のトピックで説明しているコンパイラー・オプションの詳細は、「コンパイラー・リファレンス」にある各オプションの説明を参照してください。

覚えておくべきこと:

関連情報