0

__builtin_expect来自 GCC 的程序员可以使用来显示哪些变体预计会经常出现,哪些变体很少见。但 __builtin_expect只有“真”和“假”(0% 或 100% 的概率)

-fprofile-arcs对于一些大型项目,很难获得配置文件反馈(

是否可以向编译器提示分支的概率 >0% 和 <100% ?

4

3 回答 3

7

这里

__builtin_expect_with_probability

(long exp , long c , double probability ) 该函数具有与 相同的语义__builtin_expect,但调用者提供了 的预期概率exp == c。最后一个参数,probability,是一个介于 0.0f 和 1.0f 之间的浮点值。概率参数必须是常量浮点表达式。

Jesin 在评论中指出,Clang 11也有

于 2018-10-17T12:57:06.840 回答
4

true 和 false 真正意味着“第一个变体更有可能”和“第二个变体更有可能”。除了这些之外,没有任何实际需要。编译器将无法使用该信息。

于 2010-11-16T14:36:28.153 回答
-3

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

于 2010-11-16T14:49:31.003 回答