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

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

インライン展開は、関数呼び出しをその関数の本体に置換します。これにより、コンパイラーは呼び出し元のコンテキストでインライン展開した関数のコードを最適化して、多くの場合、特殊化された効率良いコードを生成することができます。また、実行時に関数呼び出しのオーバーヘッドを排除します。

しかし、関数呼び出しをその関数のコードに置換するため、通常はコードサイズが増えます。コードサイズが大幅に増えることもあります。これを回避するため、パフォーマンス向上の可能性と引き換えに、インライン展開を無効にすることができます。

インライン展開を完全に無効にする代わりに、インライン展開係数をデフォルト値の 100 よりも小さくすることでデフォルトのインライン展開の量を減らすことができます。これにより、主なインライン展開引数のデフォルト値が n% 縮小します。

指定するオプション:

インライン展開の無効化:

Linux* および macOS*: -fno-inline

Windows*: /Ob0

インライン展開の軽減と主なインライン展開引数の縮小:

Linux* および macOS*: -inline-factor=n

Windows*: /Qinline-factor:n

主なインライン展開引数のチューニング:

Linux* および macOS*:

  • -inline-factor

  • -inline-max-per-compile

  • -inline-max-per-routine

  • -inline-max-size

  • -inline-max-total-size

  • -inline-min-size

Windows*:

  • /Qinline-factor

  • /Qinline-max-per-compile

  • /Qinline-max-per-routine

  • /Qinline-max-size

  • /Qinline-max-total-size

  • /Qinline-min-size

コンパイラー・オプションの詳細は、各コンパイラー・オプションの説明を参照してください。

メリット

この最適化を無効化または軽減することでコードサイズが減ります。

デメリット

インライン展開を無効化または軽減することで、パフォーマンスが低下します。特に、小さな関数を多く含むアプリケーションに大きく影響します。