我偶然发现一个 #define,他们使用 __builtin_expect。
内置功能:
long __builtin_expect (long exp, long c)您可以使用
__builtin_expect为编译器提供分支 一般来说,你应该使用实际的预测资料 配置文件反馈(-fprofile-arcs) ,就像程序员一样 出了名的不善于预测他们的程序实际执行情况。 但是,在一些应用程序中很难收集这些数据。返回值是
exp的值,它应该是一个整数 内置表达式的语义是,预期 例如:if (__builtin_expect (x, 0)) foo ();表示我们不期望调用
foo,因为我们期望x为零。
那么为什么不直接使用:
if (x)
foo ();
而不是使用 __builtin_expect的复杂语法?