在项目中看到了likely、unlikely宏的使用, 一直不是很清楚它们的作用,所以就深究下。likely表示被测试的表达式大多数情况下为true, unlikely则表示相反。
两个宏定义:#define likely(x) __builtin_expect(!!(x), 1)
#define unlikely(x) __builtin_expect(!!(x), 0)这两个宏经常在条件转移的...
分类:
其他好文 时间:
2015-06-03 11:55:45
阅读次数:
258
转载自:http://blog.csdn.net/tigerjibo/article/details/8279183likely()与unlikely()在2.6内核中,随处可见,那为什么要用它们?它们之间有什么区别呢?首先明确:if (likely(value)) 等价于if (value)if ...
分类:
系统相关 时间:
2015-05-22 11:01:11
阅读次数:
244
1.udpThe traditional, ancient method of tracerouting. Used by default.Probe packets are udp datagrams with so-called "unlikely" destination ports. The...
分类:
其他好文 时间:
2015-04-27 23:30:44
阅读次数:
363
he gcc C compiler has a built-in directive that optimizes conditional branches as either very likely taken or very unlikely taken. The compiler uses t...
分类:
其他好文 时间:
2015-04-22 22:01:32
阅读次数:
133
本文讲的likely()和unlikely()两个宏,在linux内核代码和一些应用中可常见到它们的身影。实质上,这两个宏是关于GCC编译器内置宏__builtin_expect的使用。顾名思义,likely()指“很有可能”之意,而unlikely()指“不太可能”之意。那么,在实际应用中,它们代...
分类:
其他好文 时间:
2015-02-13 16:26:26
阅读次数:
144
首先要明确: if(likely(value)) 等价于 if(value) if(unlikely(value)) 也等价于 if(value) 也就是说 likely() 和 unlikely() 从阅读和理解代码的角度来看,是一样的!!! 这两个宏在内核中定义如下: #define likel...
分类:
其他好文 时间:
2015-01-22 17:29:09
阅读次数:
235
内核中的 likely() 与 unlikely()在 2.6 内核中,随处可以见到 likely() 和 unlikely() 的身影,那么为什么要用它们?它们之间有什么区别?首先要明确: if(likely(value)) 等价于 if(value) if(unlikely(value)) 也等...
分类:
其他好文 时间:
2015-01-16 09:48:06
阅读次数:
128
Kernel散记——常见宏
1,likely()和unlikey()
1.1,来自哪里?@kernel.h
# define likely(x) (__builtin_expect(!!(x), 1))
# define unlikely(x) (__builtin_expect(!!(x), 0))
1.2,作用?
代码优化。详细占说是告诉编译器,优化预取...
分类:
其他好文 时间:
2015-01-14 20:01:48
阅读次数:
226
在内核中, kmalloc能够分配的最大连续内存为2的(MAX_ORDER-1)次方个page(参见alloc_pages函数, "if (unlikely(order >= MAX_ORDER)) return NULL;"), page的大小一般是4K bytes, MAX_ORDER缺省定.....
分类:
系统相关 时间:
2014-11-13 10:29:48
阅读次数:
230
ikely()与unlikely()在2.6内核中,随处可见,那为什么要用它们?它们之间有什么区别呢?首先明确:if (likely(value))等价于if (value)if (likely(a>b)) {fun1();if (unlikely(value))等价于if (value)也就是说l...
分类:
其他好文 时间:
2014-10-30 09:27:20
阅读次数:
162