Le "The Computer Language Benchmarks Game" offrent des versions optimisées dans différents langages à des problèmes donnés. Et pour ces problèmes donnés, je le trouve personnellement trés bons et effectivement une "référence en terme d'optimisation". Mais peut-être ai-je tord ?
Ce benchmark a pas mal de défauts :
Déjà les versions dites « optimisées » ne le sont pas toujours. Dans certains langages, il y a eu effectivement pas mal de temps passé pour optimiser le problème. Dans d'autres langages, c'est juste la première version qui a marché qui est testée, personne n'a cherché à optimiser.
Les langages n'implémentent pas tous les mêmes problèmes. Certains langages n'ont pas des implémentations pour tous les problèmes ou des versions trop anciennes qui ne compilent plus.
Les benchmarks sont très faussés vers une utilisation pure du CPU (absence total d'I/O). Et seulement 4 cœurs, ça paraît peu de nos jours (mon PC qui a quelques années en a 8).
Les règles pour les benchmarks m'ont l'air floues. J'ai l'impression que certains langages profitent de bindings vers un langage plus bas niveau (genre le C++ qui utilisent des trucs en C plutôt que leurs équivalents en C++). D'autres langages ont l'air de précalculer à la compilation (qui n'est pas prise en compte dans les comparaisons), ce qui n'est pas possible pour les langages dynamiques.
[^] # Re: Destructeurs
Posté par Bruno Michel (site web personnel) . En réponse à la dépêche Crystal, un langage proche de Ruby, en version 0.16. Évalué à 5.
Ce benchmark a pas mal de défauts :
Déjà les versions dites « optimisées » ne le sont pas toujours. Dans certains langages, il y a eu effectivement pas mal de temps passé pour optimiser le problème. Dans d'autres langages, c'est juste la première version qui a marché qui est testée, personne n'a cherché à optimiser.
Les langages n'implémentent pas tous les mêmes problèmes. Certains langages n'ont pas des implémentations pour tous les problèmes ou des versions trop anciennes qui ne compilent plus.
Les benchmarks sont très faussés vers une utilisation pure du CPU (absence total d'I/O). Et seulement 4 cœurs, ça paraît peu de nos jours (mon PC qui a quelques années en a 8).
Les règles pour les benchmarks m'ont l'air floues. J'ai l'impression que certains langages profitent de bindings vers un langage plus bas niveau (genre le C++ qui utilisent des trucs en C plutôt que leurs équivalents en C++). D'autres langages ont l'air de précalculer à la compilation (qui n'est pas prise en compte dans les comparaisons), ce qui n'est pas possible pour les langages dynamiques.