来自GCC的__builtin_expect概率

时间:2010-11-16 14:27:18

标签: gcc prediction built-in optimizer-hints

程序员可以使用GCC中的

__builtin_expect来显示哪些变体经常出现,哪些变量很少见。但__builtin_expect只有“真”和“假”(0%或100%概率)

对于一些大项目来说,获取个人资料反馈(-fprofile-arcs)变得很难,有时程序员确实知道他在某个程序点有多大的分支概率。

可以给编译器一个提示,即分支的概率> 0%且<100%?

3 个答案:

答案 0 :(得分:5)

真与假的确意味着“第一种变体更有可能”,“第二种变体更有可能”。除了这些之外,没有实际需要任何其他值。编译器将无法使用该信息。

答案 1 :(得分:3)

来自here

  

__builtin_expect_with_probability

     

(长 exp ,长 c ,双概率)。该函数的语义与__builtin_expect相同,但调用方提供exp == c的预期概率。最后一个参数 probability 是一个浮点值,范围为0.0f和1.0f。

答案 2 :(得分:-1)

非确定性不是编译器输出的理想特性,更不用说语言特性了。只有部分优化更喜欢一个分支没有真正的好处,而且我知道没有编译器可以做到这一点。