インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

関数順序リストと IPO コードレイアウトの比較

インテル® コンパイラーは、次の 2 つの方法で、実行ファイル内の関数のレイアウトを最適化します。

2 つの方法にはそれぞれ長所があります。proforder によって作成される関数順序リストを使用すると、非スタティック関数 (リンカーに対して関数名を公開する外部関数およびライブラリー関数) のレイアウトを最適化できます。

スタティック関数の名前はオブジェクト・ファイルで利用できないため、リンカーは、これらの関数のレイアウト順序を直接操作できません。

コンパイラーは、他のコンパイラーでコンパイルされた関数 (ライブラリー関数など) のレイアウト順序を操作できません。IPO がアクティブな場合、関数レイアウトの最適化は自動的に実行されます。

代わりに、/Qipo オプション (Windows*) を使用して、インテル® C++ コンパイラーでコンパイルされたすべての static 関数または extern 関数のレイアウトを最適化できます。コンパイラーは、他のコンパイラーでコンパイルされた関数 (ライブラリー関数など) のレイアウト順序を操作できません。IPO がアクティブな場合、関数レイアウトの最適化は自動的に実行されます。

関数順序リストの影響

関数の種類

IPO コードレイアウト

proforder による関数の順序配置

スタティック

影響なし

外部関数

ライブラリー

影響なし

関数順序リスト使用のガイドライン (Windows*)

関数順序リストを作成するには、次のガイドラインに従ってください。