+ Répondre à la discussion Actualité déjà publiée
Page 1 sur 2 12 DernièreDernière
  1. #1
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : juin 2006
    Messages : 2 307
    Points : 4 222
    Points
    4 222

    Par défaut Une étude compare différents langages pour le calcul intensif

    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 ?
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  2. #2
    Membre éprouvé Avatar de Shuty
    Homme Profil pro
    Ingénieur en développement
    Inscrit en
    octobre 2012
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur en développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : octobre 2012
    Messages : 630
    Points : 1 201
    Points
    1 201

    Par défaut

    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... ?
    Agence web Dim'Solution, créateur de solutions numériques
    Sites internet, ecommerce, logiciels, applications mobiles, référencement (SEO), plugin Prestashop, Magento, WordPress, Joomla!...

    Cours de trading gratuit | Envoyer des sms gratuitement | Envoyer des fax gratuitement | Plateforme de Fax à l'international

  3. #3
    Membre confirmé Avatar de Grabeuh
    Homme Profil pro
    Développeur Web
    Inscrit en
    février 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2009
    Messages : 114
    Points : 644
    Points
    644

    Par défaut

    Citation Envoyé par Shuty Voir le message
    Et le java du coup... ?
    Il mouline toujours...

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    mai 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2008
    Messages : 16
    Points : 22
    Points
    22

    Par défaut

    Il faut allez voir les résultats complets....
    java 2.69 fois plus lent 3 ème.

  5. #5
    Membre régulier
    Inscrit en
    octobre 2006
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : octobre 2006
    Messages : 108
    Points : 118
    Points
    118

    Par défaut

    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

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    février 2004
    Messages
    19 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2004
    Messages : 19 814
    Points : 40 232
    Points
    40 232

    Par défaut

    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...

  7. #7
    Membre habitué

    Profil pro
    Inscrit en
    septembre 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2008
    Messages : 90
    Points : 151
    Points
    151

    Par défaut

    Surtout si tu peux optimiser ça via le compilateur , autrement ça n'a pas de sens .

  8. #8
    Membre expérimenté Avatar de nchal
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2012
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2012
    Messages : 472
    Points : 1 447
    Points
    1 447

    Par défaut

    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.
    Si la réponse vous convient, un petit ça encourage.
    Avant tout nouveau post, pensez à : la FAQ, Google et la fonction Recherche
    Si vous devez poster, pensez à: Ecrire en français, la balise [CODE] (#) et surtout

  9. #9
    Membre expérimenté
    Homme Profil pro
    Consultant Ingenierie mécanique
    Inscrit en
    mars 2006
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Consultant Ingenierie mécanique
    Secteur : Transports

    Informations forums :
    Inscription : mars 2006
    Messages : 685
    Points : 1 511
    Points
    1 511

    Par défaut

    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

  10. #10
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    décembre 2011
    Messages
    1 120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : décembre 2011
    Messages : 1 120
    Points : 2 637
    Points
    2 637
    Billets dans le blog
    12

    Par défaut

    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).
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Mon profil Developpez | Mon profil Linkedin | Mon site : https://gokan-ekinci.appspot.com

  11. #11
    Membre expérimenté
    Homme Profil pro
    Consultant Ingenierie mécanique
    Inscrit en
    mars 2006
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Consultant Ingenierie mécanique
    Secteur : Transports

    Informations forums :
    Inscription : mars 2006
    Messages : 685
    Points : 1 511
    Points
    1 511

    Par défaut

    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

  12. #12
    Membre expérimenté
    Homme Profil pro
    Consultant Ingenierie mécanique
    Inscrit en
    mars 2006
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Consultant Ingenierie mécanique
    Secteur : Transports

    Informations forums :
    Inscription : mars 2006
    Messages : 685
    Points : 1 511
    Points
    1 511

    Par défaut

    Moi ce qui m'a fait choisir le C++, c'est les possibilités offettes pas le langage, on peut quasiment tout faire, voir integrer du code asm. Quitte à y passer des années si on doit en maitriser un autant que s'en soit un qui puisse tout faire ou presque. mais qui soit quand meme plutot accessible. (l'assembleur est pas vraiment accessible a mon sens ou sur certain fonction, comme les fonction matricielle de base )
    Java ou C# on est bloqué, déja rien que de penser qu'il y a un ramasse miette en tache de fond et qui se declenche quand bon lui semble sans qu'on puisse y faire grand chose, ca me fou la migraine...
    Si je veux un ramasse miette je peux me le faire en c++, mais quel interet, les pointeurs c'est tellement bien que franchement en avoir peur est absurde. oui c'est sur faut savoir ce qu'on fait c'est tout.

  13. #13
    Expert éminent
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    août 2007
    Messages
    1 641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : août 2007
    Messages : 1 641
    Points : 6 446
    Points
    6 446

    Par défaut

    Un langage de haut niveau est justement fait pour abstraire la technique non liée à ton algorithme. (ainsi, le développeur peut se concentrer sur les fonctionnalité de son programme et non sur la technicité de son matériel qui le détourne de la raison même pour laquelle il développe)
    Après, je ne dis pas qu'il faut faire n'importe quoi ou que le garbage collector de Java est bien fait, mais là est l'idée.

    Un développeur ne programme pas pour la beauté du geste (ça n'a aucun sens).
    Un développeur programme des fonctionnalités.
    Toute l'intention du développeur se doit d'être concentrée là dessus et les considérations techniques le détournent de cet objectif.
    C'est la raison pour laquelle de plus en plus d'API permettent de faire de la génération de code par des annotations.

    OK, côté perf, le C++ est meilleurs que Java, pas trop de débat là dessus.
    Côté accessibilité, rapidité de développement, lisibilité du code, maintenance et portabilité : Java passe devant

  14. #14
    Débutant
    Profil pro
    Inscrit en
    mai 2006
    Messages
    687
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2006
    Messages : 687
    Points : 167
    Points
    167

    Par défaut

    c++

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    novembre 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2008
    Messages : 34
    Points : 20
    Points
    20

    Par défaut

    Dommage, il n'y a pas de test sur Linux.
    en sachant que pratiquement tous les super calculateurs sont sur Linux

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    février 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2012
    Messages : 48
    Points : 102
    Points
    102

    Par défaut

    Citation Envoyé par nchal Voir le message
    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.
    L'exemple en python est assez éloquent.
    Le code de base, un script impératif de base, sans fonction, est ~200x plus lent que le code en C. En factorisant un poil (on déplace 10 lignes de code de la boucle principale pour les mettre dans une fonction, on déclare la fonction et on ajoute un décorateur), on arrive à un facteur 1.57x plus lent que le code en C. C'est complètement absurde.
    En utilisant un poil les fonctionnalités/écosystème du langage, on arrive à des résultats qui n'ont plus rien à voir.

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    février 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2012
    Messages : 48
    Points : 102
    Points
    102

    Par défaut

    Citation Envoyé par Davidbrcz Voir le message
    Cette étude va-t-elle vous faire changer de langage pour vos applications lourdes en calcul ?
    Non, parce que je suis développeur :
    In this paper, we take a first step at correcting this unfortunate situation. The target au-
    dience for our results is younger economists (graduate students, junior faculty) or researchers
    who have used the computer less often in the past for numerical analysis and who are searching
    for guideposts in their first incursions into computation.
    En gros, la cible est le jeune économiste tout droit sortis de l'école, ou le chercheur pas très doué avec la programmation. Rien de honteux, on ne peux pas masteriser dans tous les domaines. Et avec cette cible en tête, l'étude semble beaucoup moins absurde, on veut le langage avec les meilleurs perfs avec du code pas forcément idiomatique.
    Mais sur developpez.com, la cible n'est pas le jeune économiste, c'est le développeur. Et donc, venir nous poser ce genre de questions avec ce genre d'études, je trouve ça grotesque.

  18. #18
    Membre averti

    Profil pro
    Inscrit en
    octobre 2003
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2003
    Messages : 287
    Points : 449
    Points
    449

    Par défaut

    Citation Envoyé par cueffic Voir le message
    Dommage, il n'y a pas de test sur Linux.
    en sachant que pratiquement tous les super calculateurs sont sur Linux
    Dommage surtout qu'il n'y a pas de tests de calculs intensifs
    Le test est basé sur un vecteur de 17.000 entrées. C'est à dire peanuts !
    En ce moment traiter une matrice de 500.000 entrées, ça me prend juste quelques secondes en java sur une vieille rogne (un amd athlon) et sans aucune recherche d'optimisation.

  19. #19
    Membre confirmé
    Profil pro
    Retraité
    Inscrit en
    novembre 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : novembre 2009
    Messages : 284
    Points : 519
    Points
    519

    Par défaut

    Pour que la discussion ne tourne pas en rond, reste à définir ce qu'on entend par "calcul intensif" (calcul linéaire, bases de données,...) et à quel type de machine on s'intéresse.

    Pour les "supercomputers", il n'y a pas photo: la référence c'est le Top500 (http://www.top500.org/project/introduction/) basé sur LINPACK et bien évidemment orienté vers le calcul linéaire.

    [troll] Avec la mentalité actuelle, rien ne m'empêche de qualifier de calcul intensif un run de 48 heures sur mon PC personnel, ce qui ne correspond évidemment pas à l'ordre de grandeur des performances que nécessite les prévisions météorologiques de la Météo Nationale.[/troll]
    GraceGTK: a plotting tool at http://gracegtk.sourceforge.net

  20. #20
    Membre chevronné Avatar de CodeurPlusPlus
    Profil pro
    Inscrit en
    septembre 2013
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2013
    Messages : 551
    Points : 1 765
    Points
    1 765

    Par défaut

    N'est-ce pas juste une opération de communication de plus pour nous faire gober que le C++ est le seul langage de programmation valable ?

    [TROLL]Alors que c'est un calvaire d'écrire quoi que ce soit dans ce langage[/TROLL]

Discussions similaires

  1. Réponses: 29
    Dernier message: 27/12/2016, 12h28
  2. Réponses: 0
    Dernier message: 06/06/2011, 12h47
  3. Meilleur langage pour une erlation bdd
    Par Captain_JS dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 15/03/2005, 13h44
  4. Quel langage pour envoyer un fichier sur une adresse
    Par dai.kaioh dans le forum Développement
    Réponses: 2
    Dernier message: 02/04/2004, 16h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo