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

时间:2014-01-17 08:23:03

标签: php performance zend-framework opcache

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

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

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

1 个答案:

答案 0 :(得分:58)

opcache.optimization_level的位对应于:

  • 位0 - 传递1:
  • 第1位 - 传2:
    • 将常量操作数转换为预期类型
    • 使用常量操作数转换条件JMP
    • 优化静态BRKCONT
  • 第2位 - 传3:
    • 将$ a = $ a + expr转换为$ a + = expr
    • 将$ a ++转换为++ $ a
    • 优化系列JMP s
  • 第3位 - 传4:
  • 第4位 - 传5:
    • 块优化(基于CFG执行许多不同优化模式的最昂贵的优化传递 - control flow graph
  • 第8位 - 传9:
    • 注册allocation(允许重复使用临时变量)
  • 第9位 - 传10:
    • 删除NOP

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

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

的信息