• Linux likely unlikely


    /*************************************************************************
     *                        Linux likely unlikely
     * 说明:
     *     在阅读一些源代码的时候经常会遇到likely和unlikely,一直也没有去进一步
     * 跟踪其工作机制,于是今天抽点时间来验证一下。
     *
     *                                      2016-5-3 深圳 南山平山村 曾剑锋
     ************************************************************************/
    
    一、参考文档:
        1. Linux中的likely()和unlikely() 
            http://blog.chinaunix.net/uid-25409479-id-158584.html
        2. 浅析linux likely unlikely的实现细节
            http://www.bianceng.cn/OS/Linux/201605/49902.htm
    
    二、Demo:
        #include <stdio.h>
    
        #define unlikely(expr) __builtin_expect (expr, 0)
        #define likely(expr)   __builtin_expect (expr, 1)
    
        int main(int argc, char *argv) {
    
            printf("unlikely: %02x.
    ", unlikely(1!=1));
            printf("unlikely: %02x.
    ", unlikely(1==1));
    
            printf("likely: %02x.
    ", likely(1!=1));
            printf("likely: %02x.
    ", likely(1==1));
    
        }
    
    三、结果:
        myzr@myzr:~/c_program$ ./a.out
        unlikely: 00.
        unlikely: 01.
        likely: 00.
        likely: 01.
    
    四、结论:
        1. 在expr中,表达的值并不会影响likely、unlikely表达式的返回值,故其使用方法应该是相同的;
        2. 如参考文章中提到的:使用likely(),执行if后面的语句的机会更大,使用unlikely(),执行else后面的语句机会更大一些。
        3. 于是我们知道了,likely、unlikely不影响表达式的值,而是表示执行if、else中代码可能性加上了推测的可能性。
  • 相关阅读:
    推荐一波好的代码托管
    二十一、如何导入svg图片
    二十、滑动开关css
    十九、CSS如何引入字体
    十八、移动端rem布局
    十五、css3 Filter--滤镜
    十四、css动画基础知识
    十三、初始化标签默认样式
    十二、移动端头部声明
    十一、使用a标签打电话、发短信、发邮件
  • 原文地址:https://www.cnblogs.com/zengjfgit/p/5454181.html
Copyright © 2020-2023  润新知