gcc 分支预测

来源:互联网 发布:java基本功编程题 编辑:程序博客网 时间:2024/04/30 21:36
> #if defined __GNUC__> #define likely(x) __builtin_expect (!!(x), 1)> #define unlikely(x) __builtin_expect (!!(x), 0)> #else> #define likely(x) (x)> #define unlikely(x) (x)

unlikely表示不期望发生,likely表示期望发生,__builtin_expect(x,y) 会告诉编译器大多数情况下x==y相等,你也许会更喜欢使用 gcc 的一个参数 ‘-fprofile-arcs’ 来收集程序运行的关于执行流程和分支走向的实际反馈信息,如果这样写

int function(int x){    int m=0;    if(unlikely(x)){        m = 10; //1    }else{    m=200;      //2    }}

cpu会优先加载else(2)的部分,来提高cpu分支预测的准确性

0 0