crquan 发表于 2004-11-29 20:20:42

【讨论】2.6.x 内核的 likely, unlikely

2.6.x 内核中有多处用到了这两个宏,我在头文件<include/linux/compiler.h>里查到了


#define likely(x)          __builtin_expect(!!(x), 1)
#define unlikely(x)        __builtin_expect(!!(x), 0)


正不知何意,不知有人知否?

shy828301 发表于 2004-12-15 09:37:18

对于条件选择语句,gcc内建了一条指令用于优化,在一个条件经常出现或者很少出现的时候,编译器可以根据这条指令对条件分支选择进行优化,内核把这条指令封装成了宏

001ye 发表于 2005-1-21 19:41:24

这个好像和cache有关!

zhllg 发表于 2005-2-20 00:41:06

这个好像和cache有关!
对,主要是在条件判断结果可以预测时--比如处理错误,可以让编译器更加合理的安排机器指令的顺序,这样可以保证prefetch到cpu cache中指令,大多数情况下,正是下面紧接着要执行的。以加快速度

001ye 发表于 2005-2-24 10:50:03

但是,我还想问一下。是不是,有流水线likely就有用啊!我用的uclinux中好象也有这个语句啊!这个是针对arm 的啊!

Herro_tales 发表于 2005-3-9 10:12:10

对于条件选择语句,gcc内建了一条优化指令,在一个条件经常出现likely(),或者该条件很少出现的时候unlikely(),编译器可以根据这条指令对条件分支选择进行优化。内核把这条指令封装成了宏。
页: [1]
查看完整版本: 【讨论】2.6.x 内核的 likely, unlikely