folly
的Likely.h
文件提供了 LIKELY 和 UNLIKELY 宏,提示编译器在分支预测时选择分支。其实现很简单:
#define LIKELY(x) (__builtin_expect((x), 1))
#define UNLIKELY(x) (__builtin_expect((x), 0))
用法如下:
#include <folly/likely.h>
int a = 1;
if (LIKELY(a == 1)) {
a = 2;
}
if (UNLIKELY(a == 3)) {
a = 3;
}
只在gcc
下适用。
Q. E. D.