Nodefony
Framework Node.js fullstack — HTTP & WebSocket, même contexte

Où se situe Nodefony

Le débit, face à un serveur nu et face à Express et NestJS munis des mêmes garanties.

Le débit, camp par camp

Même route, même charge utile, même protocole de mesure, même concurrence (c64), NODE_ENV=production. Chaque valeur est la médiane de 3 tirs, une série étant refusée au-delà de 3 % de dispersion.

req/s node:http nu Express (nu) Express équipé NestJS équipé Nodefony 0,0 10 000,0 20 000,0 30 000,0 40 000,0 50 000,0 43 216,93 20 087,66 19 234,99 23 511,02 21 686,47 Débit Débit médian par framework
req/s node:http nu Express (nu) Express équipé NestJS équipé Nodefony 0,0 10 000,0 20 000,0 30 000,0 40 000,0 50 000,0 43 216,93 20 087,66 19 234,99 23 511,02 21 686,47 Débit Débit médian par framework
ms node:http nu Express (nu) Express équipé NestJS équipé Nodefony 0,0 1,0 2,0 3,0 4,0 5,0 6,0 2,11 4,27 4,57 4,2 4,37 Latence p99 (plus bas = mieux) p99 par framework
ms node:http nu Express (nu) Express équipé NestJS équipé Nodefony 0,0 1,0 2,0 3,0 4,0 5,0 6,0 2,11 4,27 4,57 4,2 4,37 Latence p99 (plus bas = mieux) p99 par framework
node:http nu43 2171,452,111,2 %aucun framework — plancher théorique
Express (nu)20 0883,124,272,2 %route + res.json(), rien d'autre
Express équipé19 2353,274,572,0 %ALS, CORS, en-têtes de sécurité, CSRF, traceparent, zones
NestJS équipé23 5112,634,201,3 %Fastify + les mêmes garanties, décorateurs et injection NestJS
Nodefony21 6862,884,370,7 %le même travail, intégré au pipeline

Les rapports, paire par paire

Chaque ligne oppose deux camps mesurés en alternance (A₁ B₁ A₂ B₂) : c'est le seul rapport qui tienne, les absolus du tableau ci-dessus venant de fenêtres différentes. Un écart ne classe que si les deux séries d'un camp encadrent celles de l'autre.

Paire (A ↔ B)A / BSéparationLecture
express-fair ↔ nodefony88,7 %netteNodefony à 112,7 % de ce camp
bare ↔ express-fair228,5 %netteprix du service rendu, hors Nodefony
express ↔ express-fair105,5 %netteprix du service rendu, hors Nodefony
nest-fair ↔ nodefony106,8 %netteNodefony à 93,6 % de ce camp
nodefony ↔ nodefony103,0 %dans le bruittest nul — le banc ne doit voir AUCUN écart entre un camp et lui-même
L'arbitre des écarts fins : le CPU du fil principal par requête, mesuré sans profileur en 3 paires alternées face à NestJS équipé — 45,7 µs contre 42,9 µs, soit ×1,065 (séparé). Le débit agrège le noyau, les autres fils et la machine ; cette grandeur ne garde que le travail que le framework impose au fil qui sert les requêtes, à moins de 1 % de dispersion.
La ligne qui compte est Express équipé, pas Express nu : comparer un pipeline complet à un res.json() revient à comparer une berline équipée à un kart. L'écart entre les deux lignes Express (20 088 → 19 235 req/s) chiffre le prix de ces fonctionnalités, indépendamment de Nodefony.