内核中的unlikey和likely宏的说明
来源:互联网 发布:mac桌面文件不能删除 编辑:程序博客网 时间:2024/06/01 20:42
在内核代码中经常会看到unlikely和likely的踪影,他们实际上是定义在linux/compiler中的两个宏,定义如下。#definelikely(x) __builtin_expect(!!(x), 1) // 表示x的值为真的可能性更大#defineunlikely(x) __builtin_expect(!!(x), 0) // 表示x的值为假的可能性更大 也就是说,使用likely()后执行if后面的代码机会更大,使用unlikely后执行else后面的代码机会更大。 而其中的__built_expect()函数是gcc(version>= 2.96)的內建函数,目的是将“分支转移”的信息提供给编译器,这样编译器可以对代码进行优化,以减少指令跳转所带来的性能下降问题。 因此,在内核代码中使用这两个宏的主要目的是为了进行代码的优化,减少指令跳转带来性能上的下降,提高系统执行速度。需要明确的一点是:if(linkely(a>b))和if(a>b)/if(unlikely(a<b))和if(a<b)在功能上是等价的,只不过两者编译生成的二进制代码有所不同(gcc -c编译后使用objdump查看汇编)。 总之,likely和unlikely的功能就是增加cache的命中率,提供系统的执行速度。
0 0
- 内核中的unlikey和likely宏的说明
- 内核中的unlikey和likely宏的说明
- likely() unlikey()
- likely和unlikey函数源码分析
- 内核中的likely和unlikely宏的使用
- 内核中的likely和unlikely宏的使用
- linux内核中的likely()和unlikely()宏的作用
- 内核中的likely和unlikely宏定义
- 内核中的likely和unlikely宏定义
- 内核中的likely和unlikely宏定义
- linux内核中的likely()和unlikely()宏
- 内核中的likely和unlikely宏定义
- 内核中的likely()和unlikely()
- GCC——分支预测(likely和unlikey)
- linux内核中的likely和unlikely
- linux内核中的likely和unlikely
- 内核中的likely()和unlikely()
- linux内核中的likely和unlikely
- shell中取得目录下文件名字
- 我们该如何设计数据库:“普通——文艺——二逼”的区别
- 对Django框架架构和Request/Response处理流程的分析
- Linux 目录个数和文件个数限制
- Android之横屏竖屏
- 内核中的unlikey和likely宏的说明
- runOnUiThread 、 Handler 对比(一)
- 郭亮:从大数据看安全
- 各种音视频编解码学习详解 h264 ,mpeg4 ,aac 等所有音视频格式
- Windows下MySql设置表区分大小写(统一window与linux的区分表大小写)
- Windows 下Eclipse的C++开发环境配置
- 做一个蓝色的我,有海的辽阔,有天的色泽,有浪漫的裙褶,有纯洁的底色
- Linux查看磁盘/内存使用情况命令
- C++宏定义详解