Le jeu Computer Language Benchmarks (anciennement appelé The Great Computer Language Shootout ) est un projet de logiciel libre permettant de comparer comment un sous-ensemble donné d' algorithmes simples peut être implémenté dans divers langages de programmation populaires .
Le projet consiste en :
- Un ensemble de problèmes algorithmiques très simples (treize au total)
- Diverses implémentations des problèmes ci-dessus dans différents langages de programmation
- Un ensemble de tests unitaires pour vérifier que les implémentations soumises résolvent l'énoncé du problème.
- Un cadre pour exécuter et chronométrer les implémentations
- Un site web destiné à faciliter la comparaison interactive des résultats
Métrique
Les aspects suivants de chaque implémentation donnée sont mesurés :
- temps d'exécution global de l'utilisateur
- allocation de mémoire maximale
- taille compressée du code source de la solution
- somme du temps CPU total sur tous les threads
- Utilisation individuelle du processeur
Il est fréquent de rencontrer plusieurs solutions, écrites dans un même langage de programmation, pour un même problème. Cela montre que, compte tenu des contraintes d'un langage donné, une solution peut être soit très abstraite, soit économe en mémoire, soit rapide, soit encore mieux parallélisable.
Programmes de référence
Le choix de conception initial était de n'inclure que des problèmes très simples, chacun présentant un défi de programmation différent. Cela permet aux utilisateurs du Benchmark Game d'examiner attentivement les différentes implémentations.
Histoire
Le projet était connu sous le nom de The Great Computer Language Shootout jusqu'en 2007.
Un portage pour Windows a été maintenu séparément entre 2002 et 2003.
Les sources ont été archivées sur GitLab.
Il existe également des forks plus anciens sur GitHub.
Le projet est en constante évolution. La liste des langages de programmation pris en charge est mise à jour environ une fois par an, en fonction des tendances du marché. Les utilisateurs peuvent également soumettre des solutions améliorées à n'importe quel problème ou suggérer des améliorations de la méthodologie de test.
Mises en garde
Les développeurs eux-mêmes soulignent que les chercheurs doivent faire preuve de prudence lorsqu'ils utilisent de tels microbenchmarks :
[...] les benchmarks JavaScript sont éphémères et leur comportement diffère sensiblement de celui des applications réelles. Nous avons documenté de nombreuses différences de comportement et concluons, à partir de ces mesures, que les résultats basés sur les benchmarks peuvent induire en erreur les développeurs de moteurs JavaScript. De plus, nous observons dans les applications JavaScript réelles des comportements intéressants que les benchmarks ne révèlent pas, ce qui suggère que des stratégies d'optimisation jusqu'ici inexplorées pourraient s'avérer efficaces en pratique.
Impact
Les résultats des tests de performance ont révélé divers problèmes de compilation. Il est arrivé qu'un compilateur donné ne parvienne pas à traiter des constructions inhabituelles, bien que grammaticalement valides. Dans d'autres cas, les performances d'exécution se sont avérées inférieures aux attentes, ce qui a incité les développeurs de compilateurs à revoir leurs capacités d'optimisation.
Plusieurs articles de recherche se sont appuyés sur ces critères de référence, leurs résultats et leur méthodologie.
Plus d articles de Worldlex Wiki
Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.
Explorer l index