本文大部分内容参考互联网相关信息。
likely(a), unlikely(b) :告诉编译器,a很有可能是真的,b很有可能是假的,以提高效率。
定义如下
#define likely(x) __builtin_expect(!!(x), 1)
#define unlikely(x) __builtin_expect(!!(x), 0)
例子:if(likely(something)){}或是if(unlikely(something))
使用likely,执行if后面语句的可能性大些,编译器将if{}里的内容编译到前面, 使用unlikely,执行else后面语句的可能性大些,编译器将else{}里的内容编译到前面。这样有利于cpu预取,提高预取指令的正确率,因而可提高效率。