GCC による効率的な分岐予測
コードのパフォーマンスを最適化する場合、分岐予測を制御すると実行速度が大幅に向上します。 Intel アーキテクチャの場合、GCC は分岐予測動作を望ましい方向に導くメカニズムを提供し、特定のケースが頻繁に発生するシナリオのパフォーマンスを最大化します。
GCC の __builtin_expect() 関数により、開発者はヒントを提供できるようになります。予想される分岐結果に関するコンパイラ。この関数を利用すると、分岐が最近代替ルートを選択した場合でも、特定の分岐パスを一貫して予測するコードを生成するようにコンパイラに指示できます。
__builtin_expect() の構文は次のとおりです。
__builtin_expect(long exp, long c)
あなたが提供したコード サンプルでは、分岐予測が常に「通常」の場合を優先するようにしたいと考えています。 __builtin_expect() を使用すると、以下に示すように「if」条件をラップすることでこれを実現できます。
if (__builtin_expect(normal, 1))
ただし、__builtin_expect() の構文が複雑なため、「可能性が高い」や「可能性が低い」などのカスタム マクロが使用できません。 」は便宜的に使用されることがよくあります。これらのマクロは、期待値の引数をカプセル化し、コードを読みやすくします。
次の点に注意することが重要です。
以上が__builtin_expect() が GCC での分岐予測の制御に役立つのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。