Une étude compare différents langages pour le calcul intensif
Le résultat va-t-il vous faire changer de langage ?

Le , par Davidbrcz, Rédacteur
Une étude compare différents langages pour le calcul intensif
Le résultat va-t-il vous faire changer de langage ?


Une équipe universitaire a sorti une étude comparant différents langages pour le calcul intensif. L'étude se base sur un modèle économique mais peut être appliqué à d'autres domaines.

Ils ont comparé

  • C++11
  • Fortran 2008
  • Java
  • Julia
  • Python
  • MATLAB
  • Mathematica
  • R


Afin de na pas biaiser les résultats, ils n'ont en général pas cherché à tirer profit des particularités de chaque langage. L'étude ne commente pas la difficulté à porter l'algorithme dans un langage donné.

Les résultats principaux sont :

  • Le C++ et Fortran tiennent toujours les meilleures performances
  • L'avantage du C++ sur le Fortran n'est que de 5-7%
  • Julia avec son compilateur JIT donne un exécutable qui tourne en moyenne 2.7 fois plus lentement que le meilleur programme C++
  • L’implémentation Pypy donne un programme 44 fois plus lent que celui en C++. Quant a l’Interpréteur CPython, la facteur oscille entre 155 et 269
  • Utiliser Numba (un compilateur JIT Python) , demande de revoir un peu le code mais donne des performances très proches du C++ (1.6 plus lent en moyenne)
  • MATLAB est entre 9 et 11 fois plus lent que le C++. Mais combiné avec des fichiers Mex, la différence tombe entre 1.24 et 1.64
  • R est entre 500 et 700 fois plus lent que le C++. Compiler le code augmente par deux la performance
  • Mathematica donne de bonnes performances (4 fois lent que le C++) mais au prix d'un grand effort de ré-écriture de code pour tirer parti des optimisations du langage,


Les résultats détaillés sont ici et le code est accessible sur Github

Cette étude va-t-elle vous faire changer de langage pour vos applications lourdes en calcul ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de Shuty Shuty - Membre éprouvé http://www.developpez.com
le 18/07/2014 à 13:45
Citation Envoyé par Davidbrcz  Voir le message
...
  • Le C++ et Fortran tiennent toujours les meilleures performances
  • L'avantage du C++ sur le Fortran n'est que de 5-7%
  • Julia avec son compilateur JIT donne un exécutable qui tourne en moyenne 2.7 fois plus lentement que le meilleur programme C++
  • L’implémentation Pypy donne un programme 44 fois plus lent que celui en C++. Quant a l’Interpréteur CPython, la facteur oscille entre 155 et 269
  • Utiliser Numba (un compilateur JIT Python) , demande de revoir un peu le code mais donne des performances très proches du C++ (1.6 plus lent en moyenne)
  • MATLAB est entre 9 et 11 fois plus lent que le C++. Mais combiné avec des fichiers Mex, la différence tombe entre 1.24 et 1.64
  • R est entre 500 et 700 fois plus lent que le C++. Compiler le code augmente par deux la performance
  • Mathematica donne de bonnes performances (4 fois lent que le C++) mais au prix d'un grand effort de ré-écriture de code pour tirer parti des optimisations du langage,


Et le java du coup... ?
Avatar de Grabeuh Grabeuh - Membre confirmé http://www.developpez.com
le 18/07/2014 à 13:56
Citation Envoyé par Shuty  Voir le message
Et le java du coup... ?

Il mouline toujours...
Avatar de Adrass Adrass - Membre à l'essai http://www.developpez.com
le 18/07/2014 à 14:02
Il faut allez voir les résultats complets....
java 2.69 fois plus lent 3 ème.
Avatar de NicoV NicoV - Membre régulier http://www.developpez.com
le 18/07/2014 à 14:16
Citation Envoyé par Grabeuh  Voir le message
Il mouline toujours...

la méthode de comparaison est assez mal faite :
  • Les calculs ne sont faits qu'une fois par exécution, alors que parmi les langages testés certains sont compilés à la volée (Java, langages de script, ...). N'exécuter le test qu'une fois fait que le temps de compilation est compté dans le temps de calcul...
  • Les options d'exécution ne sont pas étudiées (par exemple -server pour du Java est quand même la moindre des choses pour du calcul intensif).

Résultat: sur mon PC (pas une bête de course), avec ces simples points, le temps de calcul Java passe de 2.5s à 1.9s...

Avec ce genre de conditions d'analyse, les résultats ne veulent pas dire grand chose
Avatar de tomlev tomlev - Rédacteur/Modérateur http://www.developpez.com
le 18/07/2014 à 14:20
Citation Envoyé par Davidbrcz  Voir le message
Afin de na pas biaiser les résultats, ils n'ont en général pas cherché à tirer profit des particularités de chaque langage.

Bah c'est complètement débile

Quand on utilise un langage particulier pour une tâche donnée, c'est généralement parce qu'il y est particulièrement adapté. Je me fous pas mal de savoir si X est plus rapide que Y sans utiliser les particularités de Y ; si justement ces particularités permettent à Y d'être plus rapide pour la tâche que je dois effectuer, c'est Y que je choisirai, parce qu'il est plus adapté.

Un langage n'est pas "meilleur" ou "plus performant" qu'un autre dans l'absolu, il faut utiliser le plus approprié à chaque besoin et c'est tout...
Avatar de polaroid62 polaroid62 - Membre habitué http://www.developpez.com
le 18/07/2014 à 14:22
Surtout si tu peux optimiser ça via le compilateur , autrement ça n'a pas de sens .
Avatar de nchal nchal - Membre expérimenté http://www.developpez.com
le 18/07/2014 à 15:04
Il y a un concours organisé pour savoir qui va arriver à pondre l'étude la plus débile ? Parce qu'en ce moment, on est bien servi.

Si on me dit, "on va comparer les performances en cherchant à optimiser le code le plus possible suivant le langage", je dis OUI, un grand OUI. On sait tous que le C++ est le plus rapide, mais on ne sait pas si le Java est 15x ou 2x plus lent, et ça peut-être intéressant comme info. Mais l'étude se présente comme un bête copier-coller entre les langages, alors qu'il aurait pu sortir quelques préco sur comment programmer ou configurer la JVM par exemple pour optimiser les perfs Java.
Avatar de Aiekick Aiekick - Membre éprouvé http://www.developpez.com
le 18/07/2014 à 15:19
Citation Envoyé par Grabeuh  Voir le message
Il mouline toujours...

Que'st ce que j'ai rit merci.

M'enfin ont peut dire ce qu'on veut, pour le C++ et le fortran, on discute jamais tout le monde est d'accord, et comme par hazard, le java on critique toujours plein de trucs donc la methode..
c'est bien la preuve que le java est une horreur sur patte
Avatar de Gugelhupf Gugelhupf - Modérateur http://www.developpez.com
le 18/07/2014 à 15:21
Tu peux augmenter la mémoire pour Java mais je ne vois pas trop ce qui pourrait changer, sachant que pour faire leur bench ils utilisent un petit tableau.
Je le trouve un peu moyen leur bench, il y a mieux ici (avec plus de langages, et pas de copier/coller d'algorithme entre les langages).
Avatar de Aiekick Aiekick - Membre éprouvé http://www.developpez.com
le 18/07/2014 à 15:22
Citation Envoyé par tomlev  Voir le message
Bah c'est complètement débile

Quand on utilise un langage particulier pour une tâche donnée, c'est généralement parce qu'il y est particulièrement adapté. Je me fous pas mal de savoir si X est plus rapide que Y sans utiliser les particularités de Y ; si justement ces particularités permettent à Y d'être plus rapide pour la tâche que je dois effectuer, c'est Y que je choisirai, parce qu'il est plus adapté.

Un langage n'est pas "meilleur" ou "plus performant" qu'un autre dans l'absolu, il faut utiliser le plus approprié à chaque besoin et c'est tout...

enfin la c'est meme pas le langage en lui meme qui est dritiqué, c'est plutot les compilateurs/interpreteur voir la methode d'execution, parce que a ce compte la en assembleur ca va etre galere de faire des op matricielle mais on peut y arriver ( quand tu voit ce qu'arrive a faire les gars des demo 4k en full asm ), apres tout au final le seul langage executé par le proc c'est l'assembleur
Offres d'emploi IT
Ingénieur sécurité des systèmes d'information drone (2 postes à pourvoir) H/F
Safran - Ile de France - Éragny (95610)
Ingénieur développeur intégrateur débutant H/F
Safran - Ile de France - Osny (95520)
Expert sécurité en audit d'applications (H/F)
Société Générale - Ile de France - Val-de-Marne

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique MATLAB