関数をインライン化する場合とインライン化しない場合
インライン関数は、関数本体を次の場所に置き換えることにより、関数呼び出しに関連するオーバーヘッドを削減するように特別に設計されています。通話場所。ただし、インライン化を避けるべき状況もあります。
インライン化する場合:
- 小さな関数: 小さな関数をインライン化すると、コードが高速になり、実行可能ファイルのサイズが小さくなります。 .
- 頻繁に呼び出される関数: 頻繁に呼び出される関数をインライン化すると、複数の関数によるオーバーヘッドが軽減されます。
インライン化を避けるべき場合:
- 大規模な関数: インライン関数は実行可能ファイルを肥大化し、パフォーマンスを低下させる可能性があります。
- I /O バウンド関数: I/O 操作はインライン化の影響を受けないため、
- めったに使用されない関数: めったに使用されない関数のインライン化は有益ではありません。
- コンストラクターとデストラクター: 空のコンストラクターとデストラクターでもコードが生成されます。
- ライブラリの互換性: 既存のライブラリのインライン化関数やインライン関数の変更が壊れる可能性があります互換性。
追加の考慮事項:
- 拡張性のために、非インライン仮想デストラクターとコンストラクターの使用を検討してください。
- 関数をインライン化する前にボトルネックを特定するアプリケーション。
- 「インライン」キーワードは、従う場合と従わない場合があるコンパイラへのヒントです。
参照:
- インライン化するかどうか
- [9] インライン関数
- ポリシー/バイナリ互換性の問題C
- GotW #33: インライン
- Inline Redux
- 効果的 C - 項目 33: インライン化を慎重に使用する
以上がインライン化するかどうか: インライン関数を使用して最適化する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。