まず、コンパイラにすべての関数の実装をインライン化させる方法を探していません。
inline
誤った回答のレベルを減らすには、キーワードが実際に何を意味するのかを理解してください。これが良い説明です。インラインvs静的vs外部です。
だから私の質問、なぜすべての関数定義をマークしないのinline
ですか?つまり、理想的には、唯一のコンパイル単位はですmain.cpp
。または、ヘッダーファイルで定義できない関数(pimplイディオムなど)については、さらにいくつかの可能性があります。
この奇妙な要求の背後にある理論は、オプティマイザーに最大の情報を提供するというものです。もちろん、関数の実装をインライン化することもできますが、モジュールが1つしかないため、「クロスモジュール」最適化を行うこともできます。他に利点はありますか?
誰かが実際のアプリケーションでこれを試しましたか?パフォーマンスは向上しましたか?下降?!?
すべての関数定義をマークすることの欠点は何inline
ですか?
- コンパイルは遅くなる可能性があり、はるかに多くのメモリを消費します。
- 反復ビルドが壊れているため、変更するたびにアプリケーション全体を再ビルドする必要があります。
- リンク時間は天文学的なものかもしれません
これらの欠点はすべて、開発者にのみ影響します。実行時の欠点は何ですか?