30

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

OPcache 做了哪些优化?对字节码进行了哪些传递?

追问:有没有OPcache可以很好优化的Code Pattern?例如,HHVM 可以跳过只包含类/函数声明的文件的执行,它只填充类/函数表。

4

1 回答 1

68

的位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的信息

于 2014-01-22T18:59:15.553 回答