Niveles de optimización de PHP OPcache - ¿qué son?
Hay un opcache.optimization_level php.directiva ini. Es una máscara de bits a por defecto 0xffffffff
- por lo que por defecto OPcache hace todas las optimizaciones.
¿Qué tipo de optimizaciones hace OPcache? ¿Qué pasa en bytecode se hacen?
Pregunta de seguimiento: ¿hay un patrón de código que OPcache puede optimizar muy bien? Por ejemplo, HHVM puede omitir la ejecución de archivos que contienen solo declaraciones de clase/función y solo rellena tablas de clase/función.
1 answers
Los bits de opcache.optimization_level
corresponden a:
- bit 0-paso 1:
- CSE - eliminación de subexpresiones de constantes
- Secuencias de optimización ADD_CHAR/ADD_STRING
- convertir CAST(IS_BOOL,x) en BOOL(x)
- convert INTI_FCALL_BY_NAME + DO_FCALL_BY_NAME into DO_FCALL
- bit 1-pass 2:
- bit 2-pass 3:
- Convertir $a= exp a + expr en {a + = expr
- Convertir++ a ++en ++ {a
- Optimizar series de JMP s
- bit 3-pass 4:
- Optimización de IMPRESIÓN y ECO - eliminado
- bit 4-pass 5:
- optimización de bloques (el pase de optimización más caro que realiza muchos patrones de optimización diferentes basado en CFG - gráfico de flujo de control )
- bit 8-pass 9:
- register allocation (permite la reutilización de variables temporales)
- bit 9-pass 10:
- eliminar NOPs
He mirado alrededor para ver si puedo encontrar algo en cualquier patrón de código que maneje mejor que otros, pero no he tenido suerte.
Información de https://github.com/zendtech/ZendOptimizerPlus/blob/master/Optimizer/zend_optimizer.c y https://gist.github.com/ck-on/4959032?ocp.php
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-22 19:15:32