loading...
Cover image for Pruebas de Rendimiento en Laravel 5.6 5.7 5.8 6.0 vs PHP 7.1 7.2 7.3 7.4

Pruebas de Rendimiento en Laravel 5.6 5.7 5.8 6.0 vs PHP 7.1 7.2 7.3 7.4

lito profile image Lito ・3 min read

Aprovechando el lanzamiento de Laravel 6.0 he realizado unos tests para analizar los tiempos y capacidad de respuesta de diferentes versiones de Laravel sobre diferentes versiones de PHP.

Como proyecto base he utilizado un proyecto personal llamado BeMyCrown que es compatible con todas las versiones de Laravel y PHP seleccionadas.

No ha sido posible incluir Laravel 5.4 debido a que el código del framework no es del todo compatible con las siguientes versiones.

La idea es analizar si las mejoras aplicadas en las diferentes versiones de Laravel y PHP se notan realmente en el rendimiento de la aplicación.

El servidor de pruebas dispone de una CPU un Intel Core i5–8600K @ 3.60GHz con 16 GB de RAM y discos NVME.

La configuración de dependencias Composer es la siguiente:

"require": {
 "php": ">=7.1.3",
 "laravel/framework": "X.X.*",
 "predis/predis": "^1.1",
 "eusonlito/disposable-email-validator": "^0.1",
 "eusonlito/laravel-packer": "^2.1",
 "eusonlito/laravel-meta": "^3.1",
 "eusonlito/laravel-gettext": "^2.0",
 "eusonlito/laravel-form-manager": "^1.0",
 "eusonlito/amazon-mws": "dev-master",
 "h4cc/wkhtmltopdf-amd64": "0.12.3",
 "mikehaertl/phpwkhtmltopdf": "^2.3",
 "sentry/sentry-laravel": "^1.0",
 "braintree/braintree_php": "^3.39"
}

Y para el testing he creado el siguiente script https://gist.github.com/eusonlito/b8ca1e80220f3791b3ae8bfa1d3c8d76

La ejecución genera una serie de logs de la herramienta ab y crea además los CSV que me permitirán generar las gráficas de comparación.

Como servidor uso una serie de virtualhosts de apache como proxy con las diferentes versiones de PHP-FPM, todas configuradas de la misma manera.

Aquí están los resultados al completo https://docs.google.com/spreadsheets/d/e/2PACX-1vRt4dYPz0YPg4FjKjYOCtk71n91IstKIIneFxM8aEJJEviXqFkV5SKXXkOpZv9x5htR4DuzJvigsptg/pubhtml

500 peticiones - 50 concurrentes

500 peticiones - 50 concurrentes

500 peticiones - 100 concurrentes

500 peticiones - 100 concurrentes

1000 peticiones - 50 concurrentes

1000 peticiones - 50 concurrentes

1000 peticiones - 100 concurrentes

1000 peticiones - 100 concurrentes

Como se puede ver, la llegada de Laravel 6.0 no ha aportado nada en cuanto a mejoras de rendimiento, incluso se situa muy por detrás de la 5.6 o 5.7, y tal y como se puede apreciar, con cada nueva versión el rendimiento desciende de manera notable.

Como conclusión, creo que Laravel debería ponerse las pilas de manera seria con el rendimiento global del framework, quizá quitando algo de magia en Eloquent, minimizando el uso de Facades, optimizando el Service Container o un poco de todo.

Aunque su rendimiento está por encima de otros frameworks de PHP, siendo un proyecto ya maduro debería enfocar su desarrollo en acercarse lo máximo posible a Symfony, el cual aún está muy muy por encima y ya no digamos pensar en ser la competencia de Express (NodeJS).

Por ahora, lo que lo salva es la sencillez y facilidades que ofrece al desarrollador, pero esto podría ofrecerlo en un futuro no muy lejano cualquier otro, y ya sólo nos quedaría considerar uno u otro según su rendimiento.

Eso es todo amigos!

Posted on by:

Discussion

markdown guide