Benchmark langages I
📆 01/02/2026

Les benchmarks entre langages de programmation existent depuis les débuts de l'informatique et tout développeur passionné a ses propres critères pour déterminer le langage qui aura sa préférence. De plus, l'environnement d'exécution, la version du compilateur/runtime utilisé, l'algorithmique implémentée ou encore la bonne adéquation du langage au problème posé influeront grandement sur les résultats finaux de l'exercice.
Ceci étant dit, rien ne vous empêche de réaliser vous même un benchmark sur un ou plusieurs critères qui vous intéressent. Pour ma part, j'ai choisi de tester la vitesse d'exécution d'un programme simple au cours de l'apprentissage du Cobol, langage réputé dans la manipulation de fichiers.
La problématique
La simulation consiste à compter le nombre d'enregistrements d'un fichier conséquent (plus de 3,7 millions de lignes) et de sommer les valeurs d'un champ particulier. En l'occurrence, le fichier concerné est constitué de l'ensemble des transactions immobilières réalisées en France sur une année donnée. J'avais d'ailleurs déjà utilisé ces données publiques lors de mon projet Kiko relatif aux données climatiques.
Le processus géré par chaque code source est volontairement trivial : balayer ce fichier important, compter son nombre d'enregistrements et faire la somme d'un champ spécifique (ici, le montant des ventes immobilières).
Les langages comparés sont au nombre de 6 : Javascript, C++, Cobol, Python, C#, Zig. Le dernier vous sera peut-être moins connu : il a été conçu dès 2015 par Andrew Kelley qui a souhaité un langage très robuste, efficace et maintenable. Bun, environnement d'exécution JavaScript concurrent de Node, est écrit majoritairement en Zig ou bien le projet communautaire Ghostty de Mitchell Hashimoto, le fondateur de Hashicorp.
Les résultats
Vous pourrez parcourir les différents codes source sur GitHub et constater la relative simplicité de l'algorithmique (le fichier README vous aidera à installer cette démonstration sur votre propre machine). Seul C++ possède deux versions : une version classique, très similaire aux autres versions, et une version rapide que j'ai retravaillée car j'étais frustré de constater la même performance qu'avec Javascript.
Voici les performances moyennes constatées sur un PC Windows 11 - 2,8 GHz, Intel Core i9-10900F (10 cœurs), 64 Go de RAM :
| Langage / Implémentation | Temps moyen | Taille de l'exécutable (ko) |
|---|---|---|
| C++ (version fast) | 750 ms | 267 |
| Zig | 785 ms | 258 |
| C# | 800 ms | 1 246 |
| JavaScript (Node.js) | 2 400 ms | N/A (runtime externe) |
| JavaScript (Bun) | 2 600 ms | 110 486 |
| C++ (version classic) | 2 500 ms | 281 |
| Python | 6 000 ms | N/A (interpréteur requis) |
| Cobol | 17 000 ms | 66 |
Vous pouvez noter 3 blocs assez distincts :
- 3 langages mènent le bal : C++ (fast), Zig et... C#. J'avoue avoir été impressionné par la qualité de compilation de la dernière version de .Net
- Javascript et C++ (classic) forment un second pack, avec des performances déjà 3 fois inférieures
- Enfin, Python et Cobol sont assez nettement distancés. Deux commentaires : le code Python n'a volontairement pas été compilé avec des outils comme Nuitka et le compilateur Cobol GNU n'est probablement pas vraiment optimisé sous Windows. Mais, la clarté du code Python et Cobol est à noter !
Attention toutefois à ne pas tirer des conclusions trop hâtives de ce benchmark très simplifié : un langage poussé dans ses retranchements, même si le code perdra en lisibilité, peut faire des merveilles (e.g. comparez les deux versions du code C++...). Mon propos était surtout de comparer des performances brutes sans souci majeur d'optimisations dans un premier temps.
Cette première expérience sera donc suivie par d'autres, n'en doutez pas 😉