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

2022-08-30 14:48:37

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

OPcache做了什么样的优化?字节码的传递是怎样的?

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


答案 1

的位对应于: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 的信息


答案 2

推荐