undefined

1. 分支预测

使用 __glibc_unlikely__glibc_likely

在 glibc 源码中:

1
2
3
4
5
6
7
#if __GNUC__ >= 3
# define __glibc_unlikely(cond) __builtin_expect ((cond), 0)
# define __glibc_likely(cond) __builtin_expect ((cond), 1)
#else
# define __glibc_unlikely(cond) (cond)
# define __glibc_likely(cond) (cond)
#endif

使用

1
2
if (__glibc_unlikely (count < 0)) {}
if (__glibc_likely (count > 0)) {}