最新のコンパイラが関数をインライン化するかどうかを評価するための一般的な規則はありますか?余分なスタックフレームの相対的なコストはどれくらいですか(私はそれが非常に小さいと知っていますが、一般的にそれを数量化する方法はありますか?コンパイラがインライン化できることを合理的に期待することはできますか?
私はまた、特に興味:コンパイラのインラインメソッドは、CPPに定義されていることができます
- ?
- 私はいくつかのコンパイラがデバッグでもいくつかの最適化を実装していることを知っています(VSはデバッグでRVOを使用しますが、NRVOでは使用しません) - インライン化の状況はどうですか?私は、デバッグのための予想されるコールスタックを見ることができるように、それが無効であると思います。
私は現在、メモリトラッキングシステムを最適化しようとしています。特に、最適化を有効にしないで(デバッグ時に)適用します。
...コンパイラに依存します...あなたが得る答えは非常に短時間で日付がつきます。 – dmckee
@dmckeeコンパイラの最適化についてはあまりよく分かりませんので、RVO/NRVOを例として使用します。これらのコンパイラは現代のコンパイラに実装されており、すぐに時代遅れになることはありません。私は、類似の最適化がたくさんあると仮定します。また、新しいC++標準が10年に1回しか出現しないときに、非常に短時間で回答が古くなるのは本当にわかりません。 – David
一部のコンパイラは、インライン展開や他のいくつかの最適化にもかかわらず、デバッグ性を保つのに十分なほどスマートですが、おそらく少数です。私はVisual Studioのコンパイラができないと思っています。 –