浅析linux likely unlikely的实现细节
发布时间:2016-09-08 07:47:10 所属栏目:Linux 来源:站长网
导读:#define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) 有人会问,为什么上面实现使用!!,其实这样起到了类型转化的
#define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) 有人会问,为什么上面实现使用!!,其实这样起到了类型转化的作用,把非bool型的数据,转化成了bool型,从而实现比较。 likely:x == 1 unlikely: x== 0 测试程序如下: #include <stdio.h> int main(){ int test_int = 100; printf("%dn",test_int); printf("%dn",!test_int); printf("%dn",!!test_int); test_int = -100; printf("%dn",test_int); printf("%dn",!test_int); printf("%dn",!!test_int); test_int = 0; printf("%dn",test_int); printf("%dn",!test_int); printf("%dn",!!test_int); } 输出结果: 本栏目更多精彩内容:http://www.bianceng.cn/OS/Linux/ (编辑:常州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |