关于 PHP 内核中 __builtin_expect 的解释

转自: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 的值为假的可能性更大。

编译器在编译过程中,会将可能性更大的代码紧跟着前面的代码,从而减少指令跳转。###

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,209评论 25 709
  • 在此特此声明:一下所有链接均来自互联网,在此记录下我的查阅学习历程,感谢各位原创作者的无私奉献 ! 技术一点一点积...
    远航的移动开发历程阅读 13,868评论 12 197
  • 本方案中采用的PHP扩展方式为: Ø下载PHP对应版本的源码,在其中加入、生成扩展(如smsupport.so);...
    WebSSO阅读 5,539评论 1 2
  • PHP执行原理** php是一门应用非常简单,开发效率极高的一门语言,其弱类型的变量能省去程序员大量的定义变量、类...
    人在码途阅读 5,314评论 1 7
  • 每个时代都有英雄,后辈人看前辈的历史多有不屑,其中缘由在于时也,运也,命也,若是吾辈从之,定当人中龙凤。但不能否认...
    d9a7bf245ece阅读 3,669评论 1 1