__builtin_expect from gccからの確率で
-
11-10-2019 - |
質問
__builtin_expect
GCCからプログラマーが使用して、どのバリエーションが非常に頻繁に予想されるかを示すことができ、どのバリアントがまれであるかを示すことができます。だが __builtin_expect
「真」と「false」(0%または100%の確率)のみを持っています
いくつかの大きなプロジェクトでは、プロファイルのフィードバックを取得するのは難しいです(-fprofile-arcs
)、そして時にはプログラマーは、プログラムのある時点で彼が持っている分岐の確率を知っています。
ブランチの確率が0%> <100%であることをコンパイラに提供することは可能ですか?
解決
真と偽は、「最初のバリアントがより可能性が高い」と「2番目のバリアントがより可能性が高い」ことを意味します。これら以外の値については実用的な必要はありません。コンパイラはその情報を使用できません。
他のヒント
から ここ:
長さ __builtin_expect_with_probability
(長さ exp, 、 長さ c, 、ダブル 確率)関数には同じセマンティクスがあります
__builtin_expect
, 、しかし、発信者は予想される確率を提供しますexp == c
. 。最後の議論 確率 包括的範囲0.0Fおよび1.0Fの浮動値です。
非決定的は、言語機能は言うまでもなく、コンパイラ出力にとって望ましい特性ではありません。 1つのブランチを好む部分的な最適化のみに真の利点はありません。また、私が知っているコンパイラはこれを行うことができません。
所属していません StackOverflow