|
0
在linux中判断语句经常会看到likely和unlikely,例如: if(likely(value)){ } else{ } 简单从表面上看if(likely(value)) == if(value),if(unlikely(value)) == if(value)。 这两个宏对程序运行结果没有影响,只是用于提高程序效率。其实现和gcc编译器密切相关。 也就是likely和unlikely是一样的,但是实际上执行是不同的,加likely的意识是value的值为真的可能 性更大一些,那么执行if的机会大,而unlikely表示value的值为假的可能性大一些,执行else机会大一些。 加上这种修饰,编译成二进制代码时likely使得if后面的执行语句紧跟着前面的程序,unlikely使得else后 面的语句紧跟着前面的程序,这样就会被cache预读取,增加程序的执行速度,likely和unlikely的实现在 include/linux/compiler.h中: 9 #if __GNUC__ == 2 && __GNUC_MINOR__ < 96 __builtin_expect是gcc的一个预处理命令,其解释如下: long __builtin_expect (long exp, long c) (‘-fprofile-arcs’), as programmers are notoriously bad at predicting how their |
在linux中的likely和unlikely
Linux中likely与unlikely宏
最新推荐文章于 2025-03-16 17:37:43 发布
本文介绍了Linux中likely和unlikely宏的作用及实现原理。这些宏用于提供编译器分支预测信息,通过指导编译器优化代码顺序来提高程序运行效率。
在linux中的likely和unlikely
437

被折叠的 条评论
为什么被折叠?



