__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指令优化,尽最大可能的减少跳转指令的发生。