A menudo uso Micro & Router, así que decidí hacer Benchmark. Este punto de referencia hizo gracias a (@kenjis) PHP-Framework-Benchmark. Cambié AB a AWK, agregué a la tabla "tipo de marco" y algo más ...
! Benchmark con Help wrk https://github.com/wg/wrk
Este proyecto intenta medir la sobrecarga mínima (costo mínimo de arranque) de los marcos PHP en el mundo real.
Por lo tanto, creo que las aplicaciones mínimas a Benchmark no deberían incluir:
Componentes como plantilla motor o bibliotecas de base de datos/bases de datos están fuera de alcance en este proyecto.
Esta es la rama master .
--optimize-autoloader .Algunas personas pueden pensar que usar la configuración predeterminada no es justo. Pero creo que la configuración predeterminada de un marco es una afirmación de lo que es. La configuración predeterminada es un buen punto de partida para conocer un marco. Y no puedo optimizar todos los marcos. Algunos marcos están optimizados, otros no, no es justo. Así que no elimino ningún componente/configuración.
Pero si está interesado en la evaluación comparativa con la optimización (eliminación de componentes/configuraciones que no se usan), consulte la rama Optimize.
Si encuentra algo mal con mi código, no dude en enviar solicitudes de extracción. Pero tenga en cuenta la optimización solo para "¡Hola mundo!" no es aceptable. Construyendo el más rápido "¡Hola mundo!" La aplicación no es el objetivo en este proyecto.
Estos son mis puntos de referencia, no tuyos. Te animo a que ejecute sus entornos (equivalentes de producción). (2019/01/27)
Cuadros de exhibición 



CentOS 7.6 Mi servidor
| estructura | Solicitudes por segundo | relativo | memoria máxima | relativo | archivos | tipo |
|---|---|---|---|---|---|---|
| trabajo sin marco | 11,742.54 | 19.7 | 0.41 | 1.0 | 1 | trabajo sin marco |
| Altorouter | 3,619.92 | 6.1 | 0.50 | 1.2 | 6 | enrutador |
| Enrutador php | 3,358.57 | 5.6 | 0.52 | 1.3 | 8 | enrutador |
| Fastroute | 2,463.59 | 4.1 | 0.55 | 1.3 | 15 | enrutador |
| vuelo | 1.660.40 | 2.8 | 0.68 | 1.6 | 15 | micro |
| achispado | 1.617.18 | 2.7 | 0.66 | 1.6 | 16 | micro |
| Limonade | 1.439.16 | 2.4 | 1.02 | 2.5 | 6 | micro |
| Siler-1.3 | 1.397.18 | 2.3 | 0.88 | 2.1 | 22 | micro |
| Klein.php | 1.271.65 | 2.1 | 0.78 | 1.9 | 20 | enrutador |
| martillo de oso | 1.065.35 | 1.8 | 0.94 | 2.3 | 22 | micro |
| fat -free | 1.049.13 | 1.8 | 1.50 | 3.6 | 6 | micro |
| Slim-3.x | 595.05 | 1.0 | 1.39 | 3.4 | 56 | micro |
macOS mojave 10.14.2 mi escritorio
| estructura | Solicitudes por segundo | relativo | memoria máxima | relativo | archivos | tipo |
|---|---|---|---|---|---|---|
| trabajo sin marco | 4,573.15 | 7.2 | 0.37 | 1.0 | 1 | trabajo sin marco |
| Altorouter | 2,617.56 | 4.1 | 0.47 | 1.3 | 6 | enrutador |
| Enrutador php | 2,417.23 | 3.8 | 0.47 | 1.3 | 8 | enrutador |
| Fastroute | 1.947.44 | 3.1 | 0.51 | 1.4 | 15 | enrutador |
| vuelo | 1,545.02 | 2.4 | 0.63 | 1.7 | 15 | micro |
| achispado | 1.410.26 | 2.2 | 0.61 | 1.6 | 16 | micro |
| Siler-1.3 | 1.330.79 | 2.1 | 0.77 | 2.1 | 22 | micro |
| Klein.php | 1.246.66 | 2.0 | 0.74 | 2.0 | 20 | enrutador |
| Limonade | 1.193.01 | 1.9 | 1.00 | 2.7 | 6 | micro |
| martillo de oso | 1.108.75 | 1.8 | 0.90 | 2.4 | 22 | micro |
| fat -free | 1.062.73 | 1.7 | 1.44 | 3.9 | 6 | micro |
| Slim-3.x | 631.79 | 1.0 | 1.31 | 3.5 | 56 | micro |
Nota (1): estos puntos de referencia están limitados por wrk https://github.com/wg/wrk Performance.
Instale el código fuente como http: // localhost/php-micro-router-framework-benchmark/:
$ git clone https://github.com/dejurin/php-micro-router-framework-benchmark.git
$ cd php-micro-router-framework-benchmark
$ bash setup.sh
Ejecutar puntos de referencia:
$ bash benchmark.sh
Ver http: // localhost/php-micro-router-framework-benchmark/.
Si desea comparar algunos marcos:
$ bash setup.sh PHP-Router/ flight/ lumen/
$ bash benchmark.sh PHP-Router/ flight/ lumen/
Agregué a continuación en /etc/sysctl.conf
# Added
net.netfilter.nf_conntrack_max = 100000
net.nf_conntrack_max = 100000
net.ipv4.tcp_max_tw_buckets = 180000
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 10
y ejecutar sudo sysctl -p .
Si desea ver la configuración actual, ejecute sudo sysctl -a .