__builtin_expect
来显示哪些变体经常出现,哪些变量很少见。但__builtin_expect
只有“真”和“假”(0%或100%概率)
对于一些大项目来说,获取个人资料反馈(-fprofile-arcs
)变得很难,有时程序员确实知道他在某个程序点有多大的分支概率。
可以给编译器一个提示,即分支的概率> 0%且<100%?
答案 0 :(得分:5)
真与假的确意味着“第一种变体更有可能”,“第二种变体更有可能”。除了这些之外,没有实际需要任何其他值。编译器将无法使用该信息。
答案 1 :(得分:3)
来自here:
长 __builtin_expect_with_probability
(长 exp ,长 c ,双概率)。该函数的语义与
__builtin_expect
相同,但调用方提供exp == c
的预期概率。最后一个参数 probability 是一个浮点值,范围为0.0f和1.0f。
答案 2 :(得分:-1)
非确定性不是编译器输出的理想特性,更不用说语言特性了。只有部分优化更喜欢一个分支没有真正的好处,而且我知道没有编译器可以做到这一点。