Microoptimizaciones de Laravel Framework

Lito
2 min readMar 5, 2019

Viendo los resultados de Pruebas de Rendimiento en Laravel 5.5 5.6 5.7 5.8 vs PHP 7.1 7.2 7.3 y recordando algunos posts sobre optimizaciones, he realizado una prueba “inocua” para el framework como es añadir una contrabarra a las funciones nativas de PHP para forzar su resolución en el namespace raíz en vez de primer buscarlas en el namespace actual.

Esto es sencillo de hacer mediante php-cs-fixer y la regla native_function_invocation.

php-cs-fixer fix --rules=native_function_invocation --allow-risky=yes vendor/laravel/framework/src/Illuminate/

Los resultados de este cambio son perfectamente visibles en los tests, obteniendo una ganancia de entre 2 y 8 peticiones más por segundo de media en cada ejecución.

Dispones del script de test en https://gist.github.com/eusonlito/b8ca1e80220f3791b3ae8bfa1d3c8d76

Los datos completos puedes consultarlos en https://docs.google.com/spreadsheets/d/1Mlgd-ds2pSQm-4QcJbGbronnOxFhSwekoSz0Ueti-50/edit#gid=543022577

1.000 peticiones en total con sólo una concurrente
1.000 peticiones en total con 10 concurrentes
1.000 peticiones en total con 100 concurrentes

Como puedes ver, es muy sencillo “rascar” peticiones por segundo en un framework, y esta es una manera muy sencilla de hacerlo.

Lo complicado siempre está en buscar optimizaciones que hagan que los números salten a la vista, y eso será imposible si no vamos pasito a pasito.

Si quieres grandes resultados, trabaja a pequeña escala.

--

--