相关疑难解决方法(0)

在if语句中,GCC的__builtin_expect有什么优势?

我遇到了#define他们使用的一个__builtin_expect.

文件说:

内置功能: long __builtin_expect (long exp, long c)

您可以使用__builtin_expect为编译器提供分支预测信息.一般来说,你应该更喜欢使用实际的配置文件反馈(-fprofile-arcs),因为程序员在预测程序实际执行情况方面是非常糟糕的.但是,有些应用程序难以收集此数据.

返回值是值exp,它应该是一个整数表达式.内置的语义是预期的 exp == c.例如:

      if (__builtin_expect (x, 0))
        foo ();
Run Code Online (Sandbox Code Playgroud)

表示我们不打算打电话foo,因为我们预计x会为零.

那么为什么不直接使用:

if (x)
    foo ();
Run Code Online (Sandbox Code Playgroud)

而不是复杂的语法__builtin_expect

c linux gcc built-in

130
推荐指数
4
解决办法
5万
查看次数

标签 统计

built-in ×1

c ×1

gcc ×1

linux ×1