■
UNIV_EXPECT
gccでは以下のように定義される。
# define UNIV_EXPECT(expr,constant) __builtin_expect(expr, constant)
__builtin_expectはプログラマが指定できる分岐予測の情報で、exprで指定した条件がconstantで指定した結果になる可能性が高いことをコンパイラに知らせる。
以下のマクロも定義されている。
#define UNIV_LIKELY_NULL(ptr) __builtin_expect((ulint) ptr, 0) #define UNIV_LIKELY(cond) UNIV_EXPECT(cond, TRUE) #define UNIV_UNLIKELY(cond) UNIV_EXPECT(cond, FALSE)
例:
if(UNIV_LIKELY(a == 1)) { /* こちらが実行される可能性が高い */ } else { } if(UNIV_UNLIKELY(a == 1)) { } else { /* こちらが実行される可能性が高い */ }