QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1756|回复: 5

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

[复制链接]
发表于 2004-11-29 20:20:42 | 显示全部楼层 |阅读模式
2.6.x 内核中有多处用到了这两个宏,我在头文件<include/linux/compiler.h>里查到了

[code:1]
#define likely(x)          __builtin_expect(!!(x), 1)
#define unlikely(x)        __builtin_expect(!!(x), 0)
[/code:1]

正不知何意,不知有人知否?
发表于 2004-12-15 09:37:18 | 显示全部楼层
对于条件选择语句,gcc内建了一条指令用于优化,在一个条件经常出现或者很少出现的时候,编译器可以根据这条指令对条件分支选择进行优化,内核把这条指令封装成了宏
回复

使用道具 举报

发表于 2005-1-21 19:41:24 | 显示全部楼层
这个好像和cache有关!
回复

使用道具 举报

发表于 2005-2-20 00:41:06 | 显示全部楼层
[quote:266872069b="001ye"]这个好像和cache有关![/quote]
对,主要是在条件判断结果可以预测时--比如处理错误,可以让编译器更加合理的安排机器指令的顺序,这样可以保证prefetch到cpu cache中指令,大多数情况下,正是下面紧接着要执行的。以加快速度
回复

使用道具 举报

发表于 2005-2-24 10:50:03 | 显示全部楼层
但是,我还想问一下。是不是,有流水线likely就有用啊!我用的uclinux中好象也有这个语句啊!这个是针对arm 的啊!
回复

使用道具 举报

发表于 2005-3-9 10:12:10 | 显示全部楼层
对于条件选择语句,gcc内建了一条优化指令,在一个条件经常出现likely(),或者该条件很少出现的时候unlikely(),编译器可以根据这条指令对条件分支选择进行优化。内核把这条指令封装成了宏。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-16 10:42 , Processed in 0.040044 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表