inline関数
inline関数とは
INLINE コンパイル時オプションにより、コンパイラーが関数呼び出しを、その関数呼び出しの代わりにその関数のコードに置き換えるように要求できます。コンパイラーでインライン化を行うことが許可される場合、関数呼び出しは、関数定義のソース・コードを表すマシン・コードで置き換えられます。
1 つの関数が少しの場所で呼び出されるが何度も実行される場合には、通常、その関数をインライン関数に変更すると、多数の関数呼び出しが削減され、パフォーマンスが改善されます
関数呼び出しのオーバーヘッドを回避するために使用される
行う:
’#defineの代わりにinlineを使用します
非常に小さい関数はinlineの良い候補です:より高速なコードとより小さな実行可能ファイル(コードキャッシュに残る可能性が高くなります)
関数が小さいand頻繁に呼び出されるしないでください:
大規模な機能:実行可能ファイルが大きくなり、呼び出しのオーバーヘッドに起因する実行の高速化に関係なく、パフォーマンスが大幅に低下します。
i/Oバウンドのインライン関数
関数はめったに使用されません
コンストラクタとデストラクタ:空の場合でも、コンパイラはそれらのコードを生成します
ライブラリ開発時のバイナリ互換性の破壊:
既存の関数をインライン化する
インライン関数を変更するか、インライン関数を非インラインにします。ライブラリの以前のバージョンは古い実装を呼び出します
参考:
http://wisdom.sakura.ne.jp/programming/cpp/cpp14.html
https://www.web-dev-qa-db-ja.com/ja/c%2B%2B/インライン関数を使用する場合と使用しない場合/968683671/
https://www.ibm.com/docs/ja/i/7.3?topic=arguments-inlining-function-calls
実行結果:
https://paiza.io/projects/SGffdSplS5MdNFZnuUqocg
差がない?
分からんけど、早くなるみたい。