by armfighter - 移动操作系统 - 2011-12-20 09:44:06 阅读(595) 回复(0)
本帖最后由 jlwcb 于 2011-12-20 17:00 编辑
ikely()与unlikely()在2.6内核中,随处可见,那为什么要用它们?它们之间有什么区别呢?
首先明确:
if (likely(value))等价于if (value)
if (likely(a>b)) {
fun1();
if (unlikely(value))等价于if (value)
也就是说likely()和unlikely()从阅读和理解的角度是一样的。
这两个宏在内核中定义如下:[code]
最近论坛有个很火的翻译Understanding.Linux.Network.Internals的帖子,都是些大佬,特别是九贱兄.于是兴起,也想参与一把.开始拜读这本大作.kernel看了又忘,忘了又看,大概一直在重复这么个过程.ok进如正题了.我想读过kernel的人都应该见过likely和unlikely,其实kernel中有很多东西,是值得我们借鉴的,哪怕是写userspace的par. 发现其定于如下,当然kernel src complier之前的更加复杂,这里就不讨论了.在include/linux/compiler....
原文:http://blog.csdn.net/rstevens/archive/2007/09/24/1798561.aspx 内核中的 likely() 与 unlikely() 在 2.6 内核中,随处可以见到 likely() 和 unlikely() 的身影,那么为什么要用它们?它们之间有什么区别? 首先要明确: if(likely(value)) 等价于 if(value) if(unlikely(value)) 也等价于 if(value) 也就是说 likely() 和 unlikely() 从阅读和理解...
最近看代码看到unlikely(),有点迷糊,特上网查了下,贴在此,留作备忘,也希望能帮到和我一样迷糊的朋友:) ------------------------------------------------------------------ Kernel : likely/unlikely macros Submitted by Kedar Sovani on February 11, 2005 - 7:46am Applications/tools Ever wondered what the likely and unlikely macros in the linux kernel...
在linux中判断语句经常会看到likely和unlikely,例如: if(likely(value)){ } else{ } 简单从表面上看 if(likely(value)) == if(value), if(unlikely(value)) == if(value)。 也就是likely和unlikely是一样的,但是实际上执行是不同的,加likely的意识是value的值为真的可能性更大一些,那么执行if的机会大,而unlikely表示value的值为假的可能性大一些,执行else机会大一些。加上这种修饰,编译成二进制代码时likely使得if...
[color="#000066"]> 有关likely和unlikely ================================ Author: taoyuetao Email: [email=tao_yuetao@yahoo.com.cn][color="#0000ff"]tao_yuetao@yahoo.com.cn[/email] Blog: taoyuetao.cublog.cn ================================ 在 [color="#0000ff"]linux 中判断语句经常会看到likely和unlikely,例如: if(likely(value)){ } else{ } 简单从表面上看if(likely(value)) == if(value),if(unlikely(val...
ver wondered what the likely and unlikely macros in the linux kernel are ? The macros are defined as : #define likely(x) __builtin_expect((x),1) #define unlikely(x) __builtin_expect((x),0) The __builtin_expect is a method that gcc (versions >= 2.96) offer for programmers to indicate branch prediction information to the compiler. The return value of __builtin_expect is the first argument...