PHP OPcache优化级别 - 它们是什么?

Jak*_*han 27 php performance zend-framework opcache

有一个opcache.optimization_level php.ini指令.它是默认的位掩码0xffffffff- 因此默认情况下OPcache会执行所有优化.

OPcache做了哪些优化?传递字节码的是什么?

后续问题:OPcache可以很好地优化代码模式吗?例如,HHVM可以跳过仅包含类/函数声明的文件的执行,它只填充类/函数表.

G-N*_*get 63

这些位opcache.optimization_level对应于:

  • 位0 - 传递1:
  • 第1位 - 传2:
    • 将常量操作数转换为预期类型
    • 使用常量操作数转换条件JMP
    • 优化静态BRKCONT
  • 第2位 - 传3:
    • 将$ a = $ a + expr转换为$ a + = expr
    • 将$ a ++转换为++ $ a
    • 优化系列JMP小号
  • 第3位 - 传4:
  • 第4位 - 传5:
    • 块优化(最昂贵的优化传递,基于CFG执行许多不同的优化模式 - 控制流图)
  • 第8位 - 传9:
    • 寄存器分配(允许重复使用临时变量)
  • 第9位 - 传10:
    • 删除NOP

我环顾四周,看看我是否能找到任何比其他代码模式更好处理的代码模式,但我没有运气.

来自https://github.com/zendtech/ZendOptimizerPlus/blob/master/Optimizer/zend_optimizer.chttps://gist.github.com/ck-on/4959032?ocp.php的信息

  • 现在还有更多通行证。https://lxr.room11.org/xref/php-src%40master/ext/opcache/Optimizer/zend_optimizer.h (3认同)
  • 托马斯的链接已失效。以下是 github 存储库中的相关文件:https://github.com/php/php-src/blob/master/ext/opcache/Optimizer/zend_optimizer.h (3认同)
  • 你的链接也死了。;) https://github.com/php/php-src/blob/5b01c4863fe9e4bc2702b2bbf66d292d23001a18/Zend/Optimizer/zend_optimizer.h (2认同)