Уровни оптимизации PHP OPcache-что это такое?
есть opcache.optimization_level php.директива Ини. Это битовая маска по умолчанию 0xffffffff
- поэтому по умолчанию OPcache выполняет все оптимизации.
какие оптимизации делает OPcache? Что происходит с байт-кодом?
последующий вопрос: есть ли шаблон кода, который OPcache может оптимизировать очень хорошо? Например, HHVM может пропустить выполнение файлов, содержащих только объявления класса / функции, и просто заполняет класс / функцию таблицы.
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-pass 3:
- преобразовать $a = $a + expr в $a += expr
- преобразование $a++ в ++$A
- оптимизация серии JMPs
- бит 3-проход 4:
- оптимизация печати и Эха - удалены
- бит 4-проход 5:
- block optimization (самый дорогой оптимизационный проход, который выполняет множество различных шаблонов оптимизации на основе CFG -график потока управления)
- бит 8-pass 9:
- зарегистрироваться распределение (позволяет повторно использовать временные переменные)
- бит 9-проход 10:
- удалить NOPs
я осмотрелся, чтобы увидеть, могу ли я найти что-нибудь на любых шаблонах кода, которые он обрабатывает лучше, чем другие, но мне не повезло.
информация из https://github.com/zendtech/ZendOptimizerPlus/blob/master/Optimizer/zend_optimizer.c и https://gist.github.com/ck-on/4959032?ocp.php