Pruebas de Rendimiento en Laravel 5.6 5.7 5.8 6.0 vs PHP 7.1 7.2 7.3 7.4
Tags: español, laravel, php, castellano
Published: 2019-09-20 22:19:35

---
title: Pruebas de Rendimiento en Laravel 5.6 5.7 5.8 6.0 vs PHP 7.1 7.2 7.3 7.4
published: true
tags: español,laravel,php,castellano
canonical_url: 
cover_image: https://thepracticaldev.s3.amazonaws.com/i/02gs6soeel96lv6s02es.png
---

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](https://bemycrown.com) 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](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](https://docs.google.com/spreadsheets/d/e/2PACX-1vRt4dYPz0YPg4FjKjYOCtk71n91IstKIIneFxM8aEJJEviXqFkV5SKXXkOpZv9x5htR4DuzJvigsptg/pubhtml)

![500 peticiones - 50 concurrentes](https://thepracticaldev.s3.amazonaws.com/i/byoz8nnobmf6m35odk32.png)
<figcaption>500 peticiones - 50 concurrentes</figcaption>

![500 peticiones - 100 concurrentes](https://thepracticaldev.s3.amazonaws.com/i/r9oy57fclt3zh2hv6yq3.png)
<figcaption>500 peticiones - 100 concurrentes</figcaption>

![1000 peticiones - 50 concurrentes](https://thepracticaldev.s3.amazonaws.com/i/icokbwbc3986evlffk3c.png)
<figcaption>1000 peticiones - 50 concurrentes</figcaption>

![1000 peticiones - 100 concurrentes](https://thepracticaldev.s3.amazonaws.com/i/etyz7gc245rc3ana4lxc.png)
<figcaption>1000 peticiones - 100 concurrentes</figcaption>

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](https://github.com/the-benchmarker/web-frameworks) 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!