Ответ 1
Биты opcache.optimization_level
соответствуют:
- бит 0 - проход 1:
- CSE - устранение подвыражений констант
- Последовательности оптимизации ADD_CHAR/ADD_STRING
- конвертировать CAST (IS_BOOL, x) в BOOL (x)
- конвертировать INTI_FCALL_BY_NAME + DO_FCALL_BY_NAME в DO_FCALL
- бит 1 - проход 2:
- бит 2 - проход 3:
- Преобразование $a = $a + expr в $a + = expr
- Преобразование $a ++ в ++ $a
- Оптимизировать серию JMP s
- бит 3 - проход 4:
- Оптимизация PRINT и ECHO - удален
- бит 4 - проход 5:
- оптимизация блоков (самый дорогой шаг оптимизации, который выполняет множество различных шаблонов оптимизации на основе CFG - диаграммы потока управления)
- бит 8 - проход 9:
- register allocation (позволяет повторно использовать временные переменные)
- бит 9 - проход 10:
- удалить NOP
Я посмотрел вокруг, чтобы увидеть, могу ли я найти что-либо на любых шаблонах кода, которые он обрабатывает лучше других, но мне не повезло.
Информация из https://github.com/zendtech/ZendOptimizerPlus/blob/master/Optimizer/zend_optimizer.c и https://gist.github.com/ck-on/4959032?ocp.php