__builtin_expect

__builtin_expect(EXP, N)。意思是:EXP==N的概率很大

这个指令是gcc引入的,作用是"允许程序员将最有可能执行的分支告诉编译器";

GCD中

#define fastpath(x) ((typeof(x))__builtin_expect((long)(x), ~0l))

#define slowpath(x) ((typeof(x))__builtin_expect((long)(x), 0l))

fastpath说明条件很可能为真;

slowpath说明条件很可能为假;

#define likely(x) __builtin_expect(!!(x), 1)

#define unlikely(x) __builtin_expect(!!(x), 0)

likely说明条件很可能为真;

unlikely说明条件很可能为假;

CPU会根据__builtin_expect指令优化,尽最大可能的减少跳转指令的发生。

你可能感兴趣的:(__builtin_expect)