本文主要是介绍likely() 和 unlikely()内建宏定义函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这给出列内建函数可能发生和不可能发生的编译选项,这是一个预处理,在代码被编译成二进制后,程序在运行时候由于if/else if/else或者其他类型的“地址转换”过程,通过使用likely可以告诉编译器,这个判断发生的概率较小,编译器会将其编译到“更远”(地址跳转幅度更大的地方),这样,减小了代码跳转的幅度,减小了运行时间。
给出代码定义
#include <stdio.h># define likely(x) __builtin_expect(!!(x), 1)
# define unlikely(x) __builtin_expect(!!(x), 0)int main()
{int i = 0;//is unlikely happen, but is still possible happenif(unlikely(i+1))printf("i+1 = %d\n", i+1);//so does likely()return 0;
}
这篇关于likely() 和 unlikely()内建宏定义函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!