gcc(version >= 2.96) 指令,作用是允许程序员将最有可能执行的分支告诉编译器。这个指令的写法为:
__builtin_expect(EXP, N)
意思是:EXP==N
的概率很大,编译器会根据这个条件,预取指令,从而减少系统的取指次数。
一般的使用方法是将__builtin_expect
指令封装宏:
#define Likely(x) __builtin_expect(!!(x),1) //@ x 很可能为真
#define UnLikely(x) __builtin_expect(!!(x),0) //@ x 很可能为假
例如:
#include <stdio.h>
#define Likely(x) __builtin_expect(!!(x),1) //@ x 很可能为真
#define UnLikely(x) __builtin_expect(!!(x),0) //@ x 很可能为假
int abs(int var)
{
//@ var 很大可能性大于0
if(Likely(var > 0))
return var;
else
return -var;
}
int main()
{
printf("%d\n",abs(10));
return 0;
}
原文:https://www.cnblogs.com/xiaojianliu/p/14690401.html