Chinaunix首页 | 论坛 | 博客
  • 博客访问: 340597
  • 博文数量: 88
  • 博客积分: 2011
  • 博客等级: 大尉
  • 技术积分: 885
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-21 14:50
文章分类

全部博文(88)

文章存档

2010年(88)

我的朋友

分类: LINUX

2010-07-20 15:51:16

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)
                   这两个宏对于阅读理解代码来说并不影响,可以无视。
  

阅读(918) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~