首页 > 代码库 > linux-kernel之likely和unlikely
linux-kernel之likely和unlikely
在阅读linux源代码的时候,我们经常会发现likely和unlikely,这两个宏语句定义在compiler.h下,
#define likely(x) __builtin_expect(!!(x), 1)
#define unlikely(x) __builtin_expect(!!(x), 0)
这里我们需要先了解__builtin_expect:# define __builtin_expect(x, expected_value) (x)
所以可以发现其实likely(x)和x是一个意思,那么为什么还要费这么一个力气去做复杂化呢?
这都是为了提高系统的速度,当likely取代直接判断的时候,gcc编译器会知道likely的分支更加可能发生,那么我们把它放在前面,这样cache命中的概率也会增高,而如果是unlikely的话,那么这件事情可能就不会发生,我们就应该把它放在后面,通过这样的机制,等于是让上层将意识里更加容易发生的事情告诉系统从而提高了整体的运行速度,从整个系统来讲会有一定的优化
linux-kernel之likely和unlikely
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。