Benchmark 2025 : JavaScript (Node.js) contre ses concurrents — qui est le plus rapide ?
La communauté des développeurs se divise traditionnellement en deux camps : certains considèrent Node.js comme un langage « jouet » lent, d'autres comme un standard industriel pour le backend. Pour dissiper les mythes, l'équipe PythonLib a mené une série de tests début 2025. Les participants étaient : Node.js 22, Go 1.23, Rust 1.80, Python 3.13 et Java 21 (GraalVM).
Les tests ont été effectués sur un serveur avec AMD EPYC 9654 (96 cœurs), 256 Go DDR5 et NVMe SSD. Trois scénarios ont été utilisés :
- Serveur HTTP (100 000 requêtes avec keep-alive, réponse JSON)
- Calculs (génération de 10 millions de nombres premiers)
- Travail avec une base de données (100 000 SELECT + INSERT dans PostgreSQL)
Résultats : qui est en tête ?
Dans le scénario du serveur HTTP, Node.js a atteint 98 000 req/s, devancé seulement par Rust (126 000) et Go (112 000). Java et Python ont fermé la marche avec respectivement 85 000 et 32 000. Le secret de Node.js : la boucle d'événements asynchrone et le V8 rapide.
Dans le test de calcul, le tableau a changé : Rust (1,2 s) et Go (1,8 s) ont écrasé Node.js (4,5 s). Python a montré 12,3 s. Cependant, Node.js a rattrapé son retard sur les opérations d'E/S : le travail avec les fichiers et le réseau était 15 % plus rapide qu'avec Go.
Pourquoi Node.js n'est-il pas un « ralentisseur » ?
Beaucoup critiquent JavaScript pour son monothread, mais en 2025, les Worker Threads et le clustering permettent d'utiliser tous les cœurs du CPU. Dans le test avec PostgreSQL, Node.js (avec le pilote pg-pool) a traité 89 000 opérations/s — presque comme Go (93 000). Python avec asyncpg n'a montré que 41 000.
- L'atout principal de Node.js — l'écosystème npm et la rapidité de développement. Rust et Go sont plus rapides, mais écrire des microservices avec eux prend 2 à 3 fois plus de temps.
- Où Node.js est-il faible ? Les tâches CPU lourdes sont mieux confiées à Rust via FFI ou WebAssembly.
- Tendance 2025 — architectures hybrides : Node.js pour l'API et le BFF, Rust pour les calculs critiques.
Résultats du benchmark
Si vous avez besoin d'un prototype rapide ou d'E/S à forte charge — Node.js reste le meilleur choix. Pour les systèmes financiers à faible latence, choisissez Rust. Go est le juste milieu entre vitesse et simplicité. Python reste bon pour le backend ML, mais pas pour la charge de production.
Les données complètes des tests et le code source sont disponibles dans notre dépôt GitHub. Suivez les mises à jour sur PythonLib — nous continuons à tester les nouvelles versions des langages et bibliothèques.