2011-10-21 20 views

答えて

4

コードの外観によって異なります。

しかし、はコードの意味を理解していません?それは間違いなくのです。

なぜあなたは実際にむしろ、すべての問題を引き起こすことが起こって、単純かどうかよりも、を何inline学ぶしようとしないのですか?

C++でのinlineキーワードの主な効果は、コンパイラにODR(One Definition Rule)を抑制させることです。そのため、非inline関数は、正確にの1つの変換単位で定義する必要があります。

inline機能は、使用されるすべての翻訳で定義する必要があります。

したがって、関数の定義方法と場所によっては、inlineの場合はとなる場合があります。私はあなたの使用が正しいところでそれを使用することをお勧めします。

-1

コンパイラがそれを無視するほどスマートではないと仮定すると、コンパイルされた出力は大きくなり、よりゆっくり実行されることがあります。一般的には、特定の目的を念頭に置いている場合は、 'register'や 'inline'のような最適化キーワードのみを使用してください。コンパイラが知らないことが分かっている場合です。

最新のCPUでは、インライン化はしばしば最適化ではなくペシミションです。これは、関数の各コピーがメモリからフェッチされ、命令がデコードされ、さまざまなキャッシュ、特に分岐予測キャッシュ内の独自の領域を使い果たすためです。

+0

-1、インライン関数は、コードセクションのどこかではなく、呼び出された場所に関数が配置されているので、分岐予測とキャッシングをより効率的に行います。キャッシュミスを引き起こすのはジャンプ先です。 – pezcode

+0

@pezcode:ハァッか。どのようにジャンプがキャッシュミスを生み出すだろうか?ジャンプは100%予測可能です。そして、その関数が最近どこからでも呼び出された場合、キャッシュ内では暑くなるでしょう。 –

関連する問題