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

标签 php performance zend-framework opcache

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

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

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

最佳答案

opcache.optimization_level 的位对应:

  • 位 0 - 通过 1:
  • 位 1 - 通过 2:
    • 将常量操作数转换为预期类型
    • 转换条件 JMP具有常量操作数
    • 优化静态 BRKCONT
  • 位 2 - 通过 3:
    • 将 $a = $a + expr 转换为 $a += expr
    • 将$a++转换为++$a
    • 优化 JMP 系列小号
  • 位 3 - 传递 4:
  • 第 4 位 - 第 5 次:
    • block 优化(最昂贵的优化过程,它基于 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

关于PHP OPcache 优化级别 - 它们是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21181045/

相关文章:

php - Gearman 工作状态的问题

php - 同时 PHP 数据库查询

java - 为返回数组的方法减少 Java 垃圾收集?

c++ - 恒定时间级联计算是否可能?

PHP/jQuery 聊天插件

php - 使用 PHP + Mysql 对目录中的文件进行排序

javascript - DIV 不显示在与变量的链接上

java - 并发/多线程何时有助于提高性能?

zend-framework - 使用 Doctrine2/Zend Framework 1.11 以及包含下划线的列

zend-framework - 找不到类 Zend_Test_PHPUnit_ControllerTestCase