6

インクリメントなどの操作が少ない機能があります。私はそれをinlineと宣言しました__attribute__((hot))

Gcc Dochotは、属性について次のことを提案しています。

hot属性は、関数がコンパイルされたプログラムのホットスポットであることをコンパイラーに通知するために使用されます。関数はより積極的に最適化され、多くのターゲットでテキストセクションの特別なサブセクションに配置されるため、すべてのホット関数が近くに表示され、局所性が向上します。

inlineこれは、非ホット関数の場合と解釈でき、プロセスアドレスマップの下位アドレス領域に配置されます。ただし、inline関数呼び出しは文字通りコードに置き換えられることになっています。inlineでは、問題は、との組み合わせがhot実際にどのように機能するかということです。

4

1 に答える 1

1

関数/メソッドのキーワード「インライン」はいつ書くべきですか? を参照してください。inlineキーワードのかなり良い説明のために。hot 関数をand として宣言するのは矛盾しているように思えinlineます。関数がヘッダー ファイルで定義されていない場合、または複数のコンパイル ユニットで定義されていない場合は、関数を として宣言しないでくださいinline

実際、関数呼び出しを関数定義に置き換えて「インライン」に配置する決定は、コンパイラ次第です。したがって、 と の組み合わせはinline、その部分をhot無視して、プログラムのセクションに配置する可能性があります。リンカは、キーワードを本当に気にするプロセスの唯一の部分であり、あなたが思っていることを必ずしも実行するとは限りません。inlinetext.hotinline

于 2012-06-12T23:05:53.610 に答える