J'utilise souvent Micro & Router, j'ai donc décidé de faire de référence. Cette référence a fait grâce à (@kenjis) php-framework-benchmark. J'ai changé AB en awk, ajouté à la table "type de framework" et autre chose ...
! Benchmark avec Aide wrk https://github.com/wg/wrk
Ce projet tente de mesurer les frais généraux minimums (coût de bootstrap minimum) des cadres PHP dans le monde réel.
Je pense donc que les applications minimales de référence ne doivent pas inclure:
Des composants comme le moteur de modèle ou les bibliothèques ORM / Database sont hors de portée de ce projet.
C'est master Branch.
--optimize-autoloader .Certaines personnes peuvent penser que l'utilisation de la configuration par défaut n'est pas juste. Mais je pense que la configuration par défaut d'un framework est une affirmation de ce qu'elle est. La configuration par défaut est un bon point de départ pour connaître un cadre. Et je ne peux pas optimiser tous les cadres. Certains cadres sont optimisés, certains ne le sont pas, ce n'est pas juste. Je ne supprime donc aucun composant / configurations.
Mais si vous êtes intéressé à l'analyse comparative avec l'optimisation (supprimant les composants / configurations qui ne sont pas utilisés), voir Optimiser Branch.
Si vous trouvez quelque chose qui ne va pas avec mon code, n'hésitez pas à envoyer des demandes de traction. Mais veuillez noter l'optimisation uniquement pour "Hello World!" n'est pas acceptable. Construire le plus rapide "Hello World!" L'application n'est pas l'objectif de ce projet.
Ce sont mes repères, pas les vôtres. Je vous encourage à courir sur vos environnements (équivalents de production). (2019/01/27)
Spectacles 



Centos 7.6 Mon serveur
| cadre | Demandes par seconde | relatif | mémoire maximale | relatif | fichiers | taper |
|---|---|---|---|---|---|---|
| sans-trame | 11 742,54 | 19.7 | 0,41 | 1.0 | 1 | sans-trame |
| Altorouter | 3 619,92 | 6.1 | 0,50 | 1.2 | 6 | routeur |
| Php-router | 3 358,57 | 5.6 | 0,52 | 1.3 | 8 | routeur |
| Fastroute | 2 463,59 | 4.1 | 0,55 | 1.3 | 15 | routeur |
| vol | 1 660,40 | 2.8 | 0,68 | 1.6 | 15 | micro |
| pompette | 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 | routeur |
| bearframework | 1 065,35 | 1.8 | 0,94 | 2.3 | 22 | micro |
| sans matières grasses | 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 mon bureau
| cadre | Demandes par seconde | relatif | mémoire maximale | relatif | fichiers | taper |
|---|---|---|---|---|---|---|
| sans-trame | 4 573,15 | 7.2 | 0,37 | 1.0 | 1 | sans-trame |
| Altorouter | 2 617,56 | 4.1 | 0,47 | 1.3 | 6 | routeur |
| Php-router | 2 417,23 | 3.8 | 0,47 | 1.3 | 8 | routeur |
| Fastroute | 1 947,44 | 3.1 | 0,51 | 1.4 | 15 | routeur |
| vol | 1 545,02 | 2.4 | 0,63 | 1.7 | 15 | micro |
| pompette | 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 | routeur |
| limonade | 1 193.01 | 1.9 | 1,00 | 2.7 | 6 | micro |
| bearframework | 1 108,75 | 1.8 | 0,90 | 2.4 | 22 | micro |
| sans matières grasses | 1 062,73 | 1.7 | 1.44 | 3.9 | 6 | micro |
| Slim-3.x | 631.79 | 1.0 | 1.31 | 3.5 | 56 | micro |
Remarque (1): Ces repères sont limités par wrk https://github.com/wg/wrk Performance.
Installez le code source en tant que 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
Coup de référence:
$ bash benchmark.sh
Voir http: // localhost / php-micro-router-framework-benchmark /.
Si vous souhaitez comparer certains frameworks:
$ bash setup.sh PHP-Router/ flight/ lumen/
$ bash benchmark.sh PHP-Router/ flight/ lumen/
J'ai ajouté ci-dessous dans /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
et exécuter sudo sysctl -p .
Si vous souhaitez voir la configuration actuelle, exécutez sudo sysctl -a .