3

非常に高い頻度で呼び出される CRC 計算関数があります。inline私はそれを作ってみたのですでに宣言しました__attribute((hot))__が、それが何かを買うかどうかはわかりません. にしようと考えていfastcallます。

gcc docsによると、

fastcall Intel 386 では、fastcall 属性により、コンパイラは最初の引数 (整数型の場合) をレジスタ ECX に渡し、2 番目の引数 (整数型の場合) をレジスタ EDX に渡します。後続のおよびその他の型付き引数は、スタックに渡されます。呼び出された関数は、引数をスタックからポップします。引数の数が可変の場合、すべての引数がスタックにプッシュされます。

fastcall入力パラメータはスタックにプッシュするのではなく、レジスタを介して送信されるため、本質的に高速になります。を使用するとinline、コンパイラは関数呼び出しを関数の本体に置き換えます。

質問は、 evenfastcallと一緒に使用inlineすると意味がありますか?

4

1 に答える 1

3

function を作成するinlineと、コンパイラは、あなたが言ったように、どこに書いても単に「貼り付け」ます。

したがって、何も呼び出されないため、使用してfastcallも意味がありません。

于 2012-07-05T21:41:17.813 に答える