转自:http://blog.csdn.net/fb408487792/article/details/49925259
Zend/zend_portability.h
#if PHP_HAVE_BUILTIN_EXPECT
# define EXPECTED(condition) __builtin_expect(!!(condition), 1)
# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
#else
# define EXPECTED(condition) (condition)
# define UNEXPECTED(condition) (condition)
#endif
main/php-config.h
/* Whether the compiler supports __builtin_expect */
#define PHP_HAVE_BUILTIN_EXPECT 1
解释:
# define EXPECTED(condition) __builtin_expect(!!(condition), 1)
# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
// !!(condition)真假变量 非非得真的逻辑运算,以0或1来达到预判
// if(EXPECTED(condition)) 等价于 if(condition)
// if(UNEXPECTED(condition)) 也等价于 if(condition)
// __builtin_expect((condition),1) 表示 condition 的值为真的可能性更大。
// __builtin_expect((condition),0) 表示 condition 的值为假的可能性更大。