L'ingénieur de Google Robert Hundt vient de publier un rapport comparatif entre Java, Scala, C++ et Go, le langage de programmation maison de Google.
Ce rapport se base sur l'analyse de différents facteurs suite à l'implémentation compacte du même algorithme dans les quatre langages.
Sans surprise, le langage C++ est le plus économe en mémoire vive et celui qui offre la Runtime la plus rapide.
Le résultat de ce benchmark dévoile en revanche que c'est le langage qui nécessite le plus « d'effort d'optimisation », des manipulations parmi lesquelles certaines sont « à un niveau de sophistication hors de la portée du développeur moyen », affirme Robert Hundt.
La mise en oeuvre du code de l'implémentation Java de l'algorithme a été la plus facile d'après le rapport. L'analyse des performances du langage est en revanche la plus complexe, notamment autour des effets du ramasse-miette (Garbage Collector), très difficile à optimiser.
Le langage Scala, qui tourne sur la JVM, et compile tout comme Java en byte-code, partage la même complexité d'analyse et d'optimisation des performances, mais sa notation concise et les puissantes fonctionnalités du langage offrent la meilleure optimisation de la complexité du code.
Quant à Go, Robert Hundt estime qu'il offre des fonctionnalités de langage intéressantes qui rendent possible l'écriture d'expressions concises et standardisées.
Le rapport rappelle que les compilateurs pour ce langage « restent immatures, ce qui se traduit à la fois sur les performances et la taille de l'exécutable »
Sur ce dernier point, les résultats de l'implémentation sont à la traine pour Go qui produit un exécutable de 1.2 Mo contre 13 Ko pour Java et 41 Ko pour C++.
C++ et Go compilent en code-machine, contrairement à Java et Scala. À ce propos, Go compile nettement plus vite que ses trois rivaux.
Le langage Go a été conçu depuis sa création il y a un an et demi comme un langage de programmation concurrentielle tout en conservant les performances d'un langage de bas niveau comme C++ et étant proche en apparence des langages dynamiques type Python.
Cette étude comparative de Google s'est déroulée en deux phases afin d'offrir l’équivalence la plus objective qui soit.
La première phase n'a utilisé que les fonctionnalités idiomatiques des langages (classes, boucles, schéma d'allocation de la mémoire...), sans utiliser des outils spécifiques destinés à maximiser les performances.
Après la publication des résultats de cette phase, divers ingénieurs de Google se sont attelés à optimiser par tous les moyens disponibles l'implémentation de chaque langage.
La comparaison des résultats des deux phases est d'après l'étude « révélatrice de la difficulté typique d'optimisation dans les langages respectifs ».
Le rapport est consultable via ce lien (PDF, 330 Ko, 10 pages)
Et vous ?
Que pensez-vous des résultats de cette étude ?
Et du langage Go et ses perspectives d'avenir ?
Le langage Go se mesure à C++, Java et Scala
Une nouvelle étude comparative des performances, menée par un ingénieur de Google
Le langage Go se mesure à C++, Java et Scala
Une nouvelle étude comparative des performances, menée par un ingénieur de Google
Le , par Idelways
Une erreur dans cette actualité ? Signalez-nous-la !