likely与unlikely是linux内核中的两个宏,主要用来预测分支,其定义如下:
#define likely(x) __builtin_expect((x),1)
#define unlikely(x) __builtin_expect((x),0)
likely表示x为1的可能性更大,unlikely表示x为0的可能性更大。换种说法,使用 likely() ,执行 if 后面的语句的机会更大,使用unlikely(),执行else 后面的语句的机会更大,这样,编译器在编译过程中,会降分支语句中被执行的可能性更大的代码紧跟着前面的代码,减少指令跳转造成的性能下降。
一句话来说,这两个宏的作用就是代码优化,提高代码执行效率。
注意: if(likely(x))等价于if(x)
if(unlikely(x))等价于if(x)
阅读(946) | 评论(0) | 转发(0) |