这个指令是gcc引入的,作用是允许程序员将最有可能执行的分支告诉编译器(优化执行,减少跳转)。这个指令的写法为:
__builtin_expect(EXP, N)
。
意思是:EXP==N的概率很大。
一般的使用方法是将__builtin_expect
指令封装为likely
和unlikely
宏。这两个宏的写法如下.
#define likely(x) __builtin_expect(!!(x), 1) //x很可能为真
#define unlikely(x) __builtin_expect(!!(x), 0) //x很可能为假
内核中的 likely() 与 unlikely()
首先要明确:
if(likely