|
不知有人研究过内核中的likely和unlikely没有?
本人最近在读2.6的内核,遇到里面常见的两个宏:
likely 和 unlikely
在include/linux/compiler.h中定义为:
#define likely(x) __builtin_expect(!!(x), 1)
#define unlikely(x) __builtin_expect(!!(x), 0)
也就是说用到了gcc的__builtin系列,在info gcc中可以查到是用于branch prediction,但我分析了汇编输出码没见有何不同啊,不知哪位朋友知此解释?
可能我这里解释得不够清楚,明天先回我的Debian做一个详细分析吧。 |
|