Serveur

Un serveur est entièrement dédié aux benchmarks, il n'héberge aucun site ou aucune autre application.

Système d'exploitation Ubuntu server 16.04 LTS 64 bits
Processeur Intel(R) Xeon(R) CPU D-1531 @ 2.20GHz
(6 coeurs, 12 threads)
RAM 32 Go DDR4 ECC
Stockage SSD
Apache Bench 2.3
nginx 1.10.3
Extensions PHP calendar, ctype, dom, exif, fileinfo, ftp, gettext, iconv, intl, json, mbstring, mysqli, mysqlnd, opcache, pdo, pdo_mysql, phar, posix, readline, shmop, simplexml, sockets, sysvmsg, sysvsem, sysvshm, tokenizer, wddx, xml, xmlreader, xmlwrite, xsl, zip.

Protocole de benchmark

#1 PHP FPM est redémarré, pour vider l'OPCache.
#2 Suppression de tous les caches et logs, warmup des caches si besoin.
#3 Un benchmark non sauvegardé est lancé, 1 000 appels, concurrence d'accès 1, pour initialiser le cache et l'OPCache.
#4 3 benchmarks de 50 000 appels sont lancés, pour chaque concurrence d'accès (1, 5, 10 et 20).
#5 Seul le meilleur résultat est pris en compte dans le Score, pour chaque concurrence d'accès.

Score

10 000

Plus le score est est élevé, plus l'outil est capable de répondre rapidement.
Un score de 10 000 est 2x plus rapide qu'un score de 5 000, 3x plus rapide qu'un score de 2 500 etc.

Chaque benchmark (Hello World, API REST etc) peut avoir un score maximum de 10 000 pour chaque concurrence d'accès (1, 5, 10 et 20).
Ce score est un pour dix mille (% * 1 000) comparé à tous les résultats du même benchmark.
Le score total est l'addidtion de tous les scores de tous les benchmarks et de toutes les concurrences d'accès.

Exemple : Symfony 4.1 a pris 57 510 ms (le plus rapide de tous les frameworks) pour effectuer le benchmark Hello World.
Symfony 4.0 a pris 58 382 ms pour le même benchmark.
Symfony 4.1 aura un score de 10 000, et Symfony 4.0 un score de 9 850 :
10 000 / (58 382 / 57 510).