美文网首页PHP实战
关于 PHP 内核中 __builtin_expect 的解释

关于 PHP 内核中 __builtin_expect 的解释

作者: Bun_Wong | 来源:发表于2016-07-21 18:33 被阅读49次

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

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

相关文章

  • 关于 PHP 内核中 __builtin_expect 的解释

    转自:http://blog.csdn.net/fb408487792/article/details/49925...

  • PHP深入理解一

    PHP的核心组成,包括两部分 :ZEND引擎PHP内核。Zend引擎:负责代码的解析、翻译和执行(解释器部分),负...

  • 由一些小问题引发的思考

    如何判断数组是否为空? c++实现 php实现 关于PHP的empty函数php-manual中这样解释:一下情况...

  • 好网站

    PHP内核探索深入理解PHP内核RabbitMQ从入门到精通

  • PHP简单入门

    1.PHP内核Zend PHP由内核Zend引擎和扩展层组成,PHP内核负责处理请求、完成文件流错误处理等操作,Z...

  • 关于之前的php底层解释-php

    php -@amazeUI -2017-02-13 05:50:28 之前说的关于变量的实现,对象和数组,都是基...

  • jemalloc 之 拾人牙慧

    一、__builtin_expect __builtin_expect 提供分支预测功能,参看这里。likely ...

  • 关于__builtin_expect

    先上代码 再上输出结果 结论 1 __builtin_expect是gcc提供的,目的是为了优化代码2 __bui...

  • php内核

    深入php内核:https://www.kancloud.cn/kancloud/php-internals/42822

  • php内核

    https://github.com/walu/phpbook

网友评论

    本文标题:关于 PHP 内核中 __builtin_expect 的解释

    本文链接:https://www.haomeiwen.com/subject/jhwbjttx.html