Guillaume Marceau a publié sur son blog un comparatif de 72 langages de programmation à partir des performances et du code source de 1368 programmes de benchmark. Les critères de comparaison sont les performances et l'expressivité (en gros l'inverse de la taille du code).
Sur chaque schéma Guillaume a reporté pour chaque programme un point qui correspond à ses performances et à son expressivité (respectivement en abscisse et ordonnée). Il a ensuite produit un schéma par langage en reliant chaque mesure à la moyenne des mesures pour un langage donné.
Sur un schéma (une imagette sur la figure ci-dessous), plus la figure se situe vers le bas, plus le langage
est expressif (moins il est verbeux). Plus elle se situe vers la
gauche, plus il rapide à s'exécuter. Avec ces conventions, le langage idéal se trouve dans le coin inférieure gauche d'une imagette.
En rassemblant les imagettes, ça donne cette intéressante vue d'ensemble :
On voit très vite que les langages proches de la machine, de type C, ont de très bonnes performances (ils sont en bleu, cf. gcc à gauche), tandis que les langages interprétés se trainent (Cf. Ruby, Python, Perl, JavaScript, PHP, Groovy et Rhino vers la droite).
Java et C# sont au coude à coude en terme de performance, avec un avantage à C# pour l'expressivité.
En fait rien de bouleversant dans les grandes lignes. Dans le détail, certains vont sans doute contester les principes de l'expérience quand ils constateront que les mesures montrent que Perl est plus rapide que Python qui est plus rapide que Ruby. En tout cas tous les trois font partis des langages les plus expressifs.
D'autre part, évitez SWI-Prolog, qui semble être le plus mal loti de tous les langages d'après cette étude. Quand à Stalin, il intéressera les spécialistes Scheme en recherche d'optimisation aggressive...
Le post original de Guillaume Marceau : http://gmarceau.qc.ca/blog/2009/05/speed-size-and-dependability-of.html
Les commentaires récents