分支声明likely()/unlikely()
来源:互联网 发布:pmc怎么编程 编辑:程序博客网 时间:2024/06/03 18:38
分支声明likely()/unlikely()
对于条件语句,gcc内建了一条指令用于优化,在一个条件经常出现,或者该条件很少出现的时候,编译器可以根据这条指令对条件分支进行优化。内核把这条指令封装成了宏,比如likely()和unlikely(),这样使用起来比较方便。
例如,下面是一个条件选择语句:
if (error) {
/* ... */
}
如果想把这个选择标记成绝少发生的分支:
/* 我们认为error绝大多数情况下都会为0 */
if (unlikely(error)) {
/* ... */
}
相反,如果我们想把一个分支标记为通常为真的分支:
/* 我们认为success通常都不会为0 */
if (likely(success)) {
/* ... */
}
在你想要对某个条件选择语句进行优化之前,一定要搞清楚其中是不是存在这么一个条件,在绝大多数情况下都会成立。这点十分重要;如果你的判断正确,确实是这个条件占压倒性的地位,那么性能会得到提升;如果你搞错了,性能反而会下降。正如上面这些例子所示,通常在对一些错误条件进行判断的时候会用到unlikely()和likely()。你可以猜到,unlikely()在内核中会得到更广泛的使用,因为if语句往往判断的是一种特殊情况。
特此声明,以上内容摘自《linux内核设计与实现》第三版
0 0
- 分支声明likely()/unlikely()
- likely() | unlikely()
- likely && unlikely
- likely unlikely
- likely、unlikely
- 内核分支优化宏likely与unlikely 与 __read_mostly
- likely and unlikely
- likely() and unlikely()
- 有关likely和unlikely
- Kernel : likely/unlikely macros
- 有关likely和unlikely
- 有关likely和unlikely
- 有关likely和unlikely
- likely和unlikely宏
- likely和unlikely
- likely和unlikely
- likely and unlikely
- 有关likely和unlikely
- mysql explain 中key_len的计算
- 期待很完美,失望令人心碎
- 第13周的总结
- 20140524
- ActiveMQ 安装使用时遇到的问题
- 分支声明likely()/unlikely()
- C++ for循环语句讲解
- How to build a product with InstallShield
- Spring MVC注解配置结合Hibernate的入门教程及其代码实例
- java学习日记
- 在Eclipse中使用picasso
- 持续集成(CI)、自动化构建和自动化测试--初探 .
- Linux 之 /etc/profile、~/.bash_profile 等几个文件的执行过程
- oracle常用日期相关 SQL