3

ブランチ並べ替えは、プロファイルに基づく最適化です。 GCCはそれをサポートしていますか?はいの場合、プロービング/計測器は実際にどのように実装されていますか?GCCでのブランチ並べ替えの実装

Linuxカーネルに2つのレベルの「分岐プロファイリング」トレーサがあることがわかります。可能性が高い/そうでない可能性があり、「すべてif()構文」ですか?カーネルは実際にこれらの2つのオプションを実装するためにGCCにどのように依存していますか?プロービング/プロファイリングはどのように実装され、どのようにデータがカーネルによって読み取られますか?

答えて

2

デフォルトでは、GCCはifの最初の部分を優先します(ifが成功し、elseが失敗したように動作します)が、__builtin_expectを使用して分岐予測を強制できます。

関連する問題