インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
インテル® コンパイラーは、次の 2 つの方法で、実行ファイル内の関数のレイアウトを最適化します。
関数順序リストを使用する
/Qipo コンパイラー・オプション (Windows*) を使用する
2 つの方法にはそれぞれ長所があります。proforder によって作成される関数順序リストを使用すると、非スタティック関数 (リンカーに対して関数名を公開する外部関数およびライブラリー関数) のレイアウトを最適化できます。
スタティック関数の名前はオブジェクト・ファイルで利用できないため、リンカーは、これらの関数のレイアウト順序を直接操作できません。
コンパイラーは、他のコンパイラーでコンパイルされた関数 (ライブラリー関数など) のレイアウト順序を操作できません。IPO がアクティブな場合、関数レイアウトの最適化は自動的に実行されます。
代わりに、/Qipo オプション (Windows*) を使用して、インテル® C++ コンパイラーでコンパイルされたすべての static 関数または extern 関数のレイアウトを最適化できます。コンパイラーは、他のコンパイラーでコンパイルされた関数 (ライブラリー関数など) のレイアウト順序を操作できません。IPO がアクティブな場合、関数レイアウトの最適化は自動的に実行されます。
関数順序リストの影響
関数の種類 |
IPO コードレイアウト |
proforder による関数の順序配置 |
---|---|---|
スタティック |
○ |
影響なし |
外部関数 |
○ |
○ |
ライブラリー |
影響なし |
○ |
関数順序リスト使用のガイドライン (Windows*)
関数順序リストを作成するには、次のガイドラインに従ってください。
順序リストは非スタティック関数の順序にのみ影響します。