IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Débats sur le développement - Le Best Of Discussion :

[Débat] C++ vs Java


Sujet :

Débats sur le développement - Le Best Of

  1. #1141
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Il existe pas mal de look and feel, il suffit de trouver celui qui te correspond.

    je trouve juste que les interfaces Java sont naturellement moches en comparaison, par exemple, à ce que proposera .NET .
    Ca n'a rien à voir avec le language. Tu peux faire du beau en Java et du très moche en C++ ou autre.

  2. #1142
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Citation Envoyé par kpouer Voir le message
    Avec java j'ai ca

    real 0m3.747s
    user 0m3.567s
    sys 0m0.345s

    Et c++

    real 0m5.796s
    user 0m5.758s
    sys 0m0.016s

    J'ai eu beau refaire le test plusieurs fois, et sur plusieurs machines, l'avantage est toujours a java, entre d'un rapportde 30 à 50%.
    Et bien qu'étant fan de java je trouve ca plutot surprenant. Quelqu'un aurait une explication a ca ? J'ai toujours entendu que java était meilleur pour les appels de fonctions, c'en est la preuve, mais je ne me l'explique pas malgré tout


    très mauvais exemple... il faut
    1) détailler les options d'optimisations pour gcc (car la jvm ne se privera pas d'en faire via JIT)
    2) éviter des fonctions récursives dans les langages classiques... ce n'est pas fait pour
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  3. #1143
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Citation Envoyé par gorgonite Voir le message
    très mauvais exemple... il faut
    1) détailler les options d'optimisations pour gcc (car la jvm ne se privera pas d'en faire via JIT)
    2) éviter des fonctions récursives dans les langages classiques... ce n'est pas fait pour
    En plus, il faut au moins lancer plusieurs fois la fonction car java met un certain temps à lancer la JVM (donc s'il faut 1sec pour lancer la JVM, forcement avec un appel à une fonction rapide, ça va pas le faire).
    Je ne répondrai à aucune question technique en privé

  4. #1144
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par kpouer Voir le message
    J'ai refait le test car leur jvm était vieillotte.
    Avec la 1.6.0_10 et gcc 3.4.6
    Je fais un fibonacci de 40.
    Avec java j'ai ca

    real 0m3.747s
    user 0m3.567s
    sys 0m0.345s

    Et c++

    real 0m5.796s
    user 0m5.758s
    sys 0m0.016s

    J'ai eu beau refaire le test plusieurs fois, et sur plusieurs machines, l'avantage est toujours a java, entre d'un rapportde 30 à 50%.


    d'après ce que je vois, le temps sys, qui est le temps CPU système utilisé, est 18 fois plus petit en C++ qu'avec Java...

    La différence dans l'autre sens est sur le temps utilisateur...

    Donc j'aurais tendance à dire que pour ce qui est de la fonctionalité, C++ est dans ce cas 18 fois plus rapide que Java....

    (et que la différence en temps utilisateur dépend d'un problème de config)
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  5. #1145
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par FloMo Voir le message
    C'est juste un avis sur le look'n'feel Sun qui a tendance à être froid. (cf. OpenOffice.org)
    Mais l'interface d'OpenOffice.org n'est pas en Java...


    Quand au LnF par défaut de Java, je suis tout à fait d'accord avec toi sur le fait qu'il est vraiment vieillot et dépassé, mais on peut très bien utilisé le LnF système qui utilisera l'apparence du système hôte (cf mes pièces jointes, avec d'un coté le look metal par défaut, et de l'autre le look système sur Windows XP).

    L'utilisation du LnF système se fait via une simple ligne de code...

    Citation Envoyé par gorgonite Voir le message
    1) détailler les options d'optimisations pour gcc (car la jvm ne se privera pas d'en faire via JIT)
    Tout à fait : cette optimisation à l'exécution est une des forces de Java.
    Un exemple flagrant vient des méthodes virtuelles, qui seront traitées comme des méthodes non-virtuelles tant qu'aucune des classes chargées en mémoire ne redéfinit pas la méthode

    Cela permet de bonne performance (en évitant le coût du polymorphisme lorsqu'il est inutile) tout en conservant les avantages de la POO (on peut toujours redéfinir la méthode, en "subissant" alors le coût du polymorphisme)


    a++
    Images attachées Images attachées   

  6. #1146
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 723
    Points
    5 723
    Par défaut
    Citation Envoyé par souviron34 Voir le message


    d'après ce que je vois, le temps sys, qui est le temps CPU système utilisé, est 18 fois plus petit en C++ qu'avec Java...

    La différence dans l'autre sens est sur le temps utilisateur...

    Donc j'aurais tendance à dire que pour ce qui est de la fonctionalité, C++ est dans ce cas 18 fois plus rapide que Java....

    (et que la différence en temps utilisateur dépend d'un problème de config)
    Du tout c'est les temps que passe le processus dans les différents modes. Le temps sys c'est en mode kernel donc des appels bas niveau et le temps user beh c'est en mode utilisateur c'est ton programme sans les appels système.

    Java tape plus dans le kernel bizarre en tout cas c'est une façon d'optimisée les choses bien qu'en mode kernel c'est quand même plus critique.
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  7. #1147
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 259
    Points : 607
    Points
    607
    Par défaut
    Citation Envoyé par gorgonite Voir le message
    très mauvais exemple... il faut
    1) détailler les options d'optimisations pour gcc (car la jvm ne se privera pas d'en faire via JIT)
    2) éviter des fonctions récursives dans les langages classiques... ce n'est pas fait pour
    Effectivement je n'ai fait aucune option d'optimisation particulière (désolé je ne suis pas un grand expert du c++ en général et de ses optimisations je l'avoue), et oui le compilateur JIT doit en faire partout de son coté.
    J'ai trouvé des articles suggérant d'utiliser ces paramètres de compilation
    g++ -O2 -fomit-frame-pointer -finline-functions -o fibo.x fibo.cpp

    ce que j'ai fait et dans ce cas j'obtiens sensiblement les mêmes temps en java qu'en c++.

    Du coup ce qui me vient à l'esprit est qu'en compilant de manière basique java a des chances d'être plus rapide que le c++ dans certains domaines.
    De plus ces options de compilations ne sont pas très intuitives et je pense que le type qui les a trouvé a du chercher et faire pas mal de tests pour choisir les bonnes.
    Dans un véritable projet, est ce que les développeurs vont changer les options de compilations de chacun de leurs .cpp en fonction des cas pour en obtenir le meilleur (car ils ne peuvent pas les mettre partout je pense), et quelle perte de temps non ?
    Dans mon idée mais je me trompe peut etre, les gens vont compiler normalement, et n'ayant pas d'élément comparatif vont se satisfaire du résultat obtenu. Qu'en dites vous ?

  8. #1148
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par kpouer Voir le message
    Dans un véritable projet, est ce que les développeurs vont changer les options de compilations de chacun de leurs .cpp en fonction des cas pour en obtenir le meilleur (car ils ne peuvent pas les mettre partout je pense), et quelle perte de temps non ?
    Dans mon idée mais je me trompe peut etre, les gens vont compiler normalement, et n'ayant pas d'élément comparatif vont se satisfaire du résultat obtenu. Qu'en dites vous ?
    Bien sûr que l'on cherche les meilleures options de compilation pour un vrai projet (industriel en tous cas) !!!

    C'est en tous cas ce qui se fait dans les projets "sérieux"...

    (ce qui effectivement n'a pas l'air d'être le cas de la très grande majorité des applications Web-based, et d'un grand nombre d'applis commerciales mais non industrielles de ces temps-ci ... )
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  9. #1149
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Citation Envoyé par kpouer Voir le message
    Du coup ce qui me vient à l'esprit est qu'en compilant de manière basique java a des chances d'être plus rapide que le c++ dans certains domaines.
    De plus ces options de compilations ne sont pas très intuitives et je pense que le type qui les a trouvé a du chercher et faire pas mal de tests pour choisir les bonnes.
    Dans un véritable projet, est ce que les développeurs vont changer les options de compilations de chacun de leurs .cpp en fonction des cas pour en obtenir le meilleur (car ils ne peuvent pas les mettre partout je pense), et quelle perte de temps non ?
    Dans mon idée mais je me trompe peut etre, les gens vont compiler normalement, et n'ayant pas d'élément comparatif vont se satisfaire du résultat obtenu. Qu'en dites vous ?


    j'en pense qu'effectivement, tu n'as pas du faire beaucoup de projets C/C++ dans ta vie, ni même t'intéresser à recompiler certains utilitaires depuis leurs sources...

    je laisse les experts C/C++ détailler comment cela se passe dans un vrai projet industriel "sérieux"
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  10. #1150
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 259
    Points : 607
    Points
    607
    Par défaut
    Citation Envoyé par gorgonite Voir le message
    j'en pense qu'effectivement, tu n'as pas du faire beaucoup de projets C/C++ dans ta vie, ni même t'intéresser à recompiler certains utilitaires depuis leurs sources...

    je laisse les experts C/C++ détailler comment cela se passe dans un vrai projet industriel "sérieux"

    Je confirme et je viens ici me cultiver, voir ce qui se fait en c++ dans la nature

  11. #1151
    Membre expérimenté
    Avatar de FloMo
    Homme Profil pro
    Freelance iOS
    Inscrit en
    Juillet 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Freelance iOS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 726
    Points : 1 511
    Points
    1 511
    Par défaut
    Citation Envoyé par gorgonite Voir le message
    j'en pense qu'effectivement, tu n'as pas du faire beaucoup de projets C/C++ dans ta vie, ni même t'intéresser à recompiler certains utilitaires depuis leurs sources...

    je laisse les experts C/C++ détailler comment cela se passe dans un vrai projet industriel "sérieux"
    Sans être un expert C/C++, je peux juste dire que si j'ai besoin de réelles performances aujourd'hui dans une application, j'utilise CUDA et bien OpenCL.

    Globalement, je pense que ça apporte beaucoup plus que les options de compilation, même si celles-ci ont une grande importance en terme de performances.

    D'ailleurs, par simple curiosité et éventuellement pour de futurs projets, j'aimerais savoir quelles sont les possibilités en terme de GPGPU du côté Java ? Ce n'est pas pour lancer un troll, mais juste parce qu'apparemment il y a beaucoup d'experts en la matière sur ce POST.
    "Il est plus facile de décomposer un problème en ses éléments, forcément plus simples, que de le traiter en sa totalité." (R. Descartes)

    Freelance iOS

  12. #1152
    Inactif  
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 357
    Points : 637
    Points
    637
    Par défaut
    il y a des bindings java opengl (jogl, ljgwl).

  13. #1153
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 723
    Points
    5 723
    Par défaut
    Citation Envoyé par FloMo Voir le message
    D'ailleurs, par simple curiosité et éventuellement pour de futurs projets, j'aimerais savoir quelles sont les possibilités en terme de GPGPU du côté Java ? Ce n'est pas pour lancer un troll, mais juste parce qu'apparemment il y a beaucoup d'experts en la matière sur ce POST.
    Là encore des bencharmarks (sur l'aspect GPGPU cela devrait se faire) restent encore ce qui est le plus accessibles dans ce genre de débat. Cependant on va se confronter au fait qu'en c++ il n'y a rien en GUI en standard alors qu'en Java oui.

    Je pense qu'est c'est plus lié à une question de coûts parce qu'en voulant atteindre un objectif de performances en terme de rapidité ou d'occupation mémoire ou autre on devrait se débrouiller avec ce qui existe sur le marché, je connais surtout Qt et Swing.
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  14. #1154
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    je préciserai qu'avec des programmes C, en général -O2 comme option est très satisfaisante, -O3 si on peut (par exemple impossible avec du code MPEG ou des sockets asynchrones).
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  15. #1155
    Membre expérimenté
    Avatar de FloMo
    Homme Profil pro
    Freelance iOS
    Inscrit en
    Juillet 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Freelance iOS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 726
    Points : 1 511
    Points
    1 511
    Par défaut
    Citation Envoyé par hegros Voir le message
    Là encore des bencharmarks (sur l'aspect GPGPU cela devrait se faire) restent encore ce qui est le plus accessibles dans ce genre de débat.
    Si on compare les calculs GPU en comparaison aux calculs CPU, il n'y a pas photo : le GPU est généralement au moins 2x plus rapide. (cf. TMPGEnc avec CUDA, Adobe CS4 avec CUDA et les promesses de MacOS X SnowLeopard avec OpenCL)

    Ce qui m'intéresse, c'est de savoir dans quelle mesure on peut utiliser les technologies GPGPU en Java.
    "Il est plus facile de décomposer un problème en ses éléments, forcément plus simples, que de le traiter en sa totalité." (R. Descartes)

    Freelance iOS

  16. #1156
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Juste pour informations avant que cela ne dévie sur des problématiques de jeux-vidéo, il y a une discussion : Le langage est-il adapté pour les jeux-vidéos ici : http://www.developpez.net/forums/d55...te-jeux-video/
    Je ne répondrai à aucune question technique en privé

  17. #1157
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 98
    Points : 115
    Points
    115
    Par défaut
    Citation Envoyé par kpouer Voir le message
    Effectivement je n'ai fait aucune option d'optimisation particulière (désolé je ne suis pas un grand expert du c++ en général et de ses optimisations je l'avoue), et oui le compilateur JIT doit en faire partout de son coté.
    J'ai trouvé des articles suggérant d'utiliser ces paramètres de compilation
    g++ -O2 -fomit-frame-pointer -finline-functions -o fibo.x fibo.cpp

    ce que j'ai fait et dans ce cas j'obtiens sensiblement les mêmes temps en java qu'en c++.

    Du coup ce qui me vient à l'esprit est qu'en compilant de manière basique java a des chances d'être plus rapide que le c++ dans certains domaines.
    De plus ces options de compilations ne sont pas très intuitives et je pense que le type qui les a trouvé a du chercher et faire pas mal de tests pour choisir les bonnes.
    Dans un véritable projet, est ce que les développeurs vont changer les options de compilations de chacun de leurs .cpp en fonction des cas pour en obtenir le meilleur (car ils ne peuvent pas les mettre partout je pense), et quelle perte de temps non ?
    Dans mon idée mais je me trompe peut etre, les gens vont compiler normalement, et n'ayant pas d'élément comparatif vont se satisfaire du résultat obtenu. Qu'en dites vous ?
    -O2 -fomit-frame-pointer -finline-functions

    Ce sont les options d'optimisation classiques en release sur gcc. A peu près tous les programmes les utilisent.

    Le test de Fibonacci est fortement récursif. Java, et plus généralement les langages sur JVM et plus encore les langages fonctionnels, est assez doué pour ça (le Computer Language Shootout est un test relativement réaliste pour comparer les perfs de langages). En gros, ils manipulent parfaitement la pile. Or dans Fibonacci, TOUT est fait sur la pile. Pas étonnant dès lors que les perfs soient identiques que C++ sur ce test (d'ailleurs en testant ta routine sur un nombre suffisamment grand, tu devrais te prendre une StackOverflowException). Le problème est que dans les langages impératifs comme Java/C++, à part dans les collections implémentant des arbres équilibrés, on n'utilise pas si souvent que ça les algos récursifs.
    Donc ton test n'a qu'une valeur assez limitée. Ceci étant, en faisant attention et en gardant à l'esprit ce que fait la JVM derrière son code, notamment en matière de gestion mémoire, il est possible d'obtenir des performances honorables en Java. Le Computer Language Shootout montre souvent un rapport 1/2 à 1/3 par rapport au C++. Et les programmes C++ sont plus souvent des implémentations très fortement optimisés plutôt que des implémentations basiques. La version #5 C++, non multithread mais qui utilise un pool d'objets Boost, est ~1,5x plus rapide que la version Java 6 (16 s contre 26s). Mais dans la simulation du problème à N corps, le Java est plus rapide que le C++ ! Dans ces tests, je dirais que le grand avantage de C++ / rapport à Java en ce qui concerne les perfs, c'est les possibilités offertes qu'offre C++ pour l'optimisation. Java offre peu ou prou de lattitude de ce coté-là, mais c'est un choix de design conscient de la part des auteurs.

  18. #1158
    LLB
    LLB est déconnecté
    Membre expérimenté
    Inscrit en
    Mars 2002
    Messages
    967
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 967
    Points : 1 410
    Points
    1 410
    Par défaut
    Citation Envoyé par el muchacho Voir le message
    Le test de Fibonacci est fortement récursif. Java, et plus généralement les langages sur JVM et plus encore les langages fonctionnels, est assez doué pour ça
    Sauf que Java n'optimise pas la récursion terminale, contrairement à beaucoup de compilateurs. Il faut donc faire attention avec ça (évidemment, sur Fibonacci, ça ne se remarque pas). Pour le reste du message, je suis d'accord.

  19. #1159
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 259
    Points : 607
    Points
    607
    Par défaut
    J'ajouterai aussi que le test en plus d'être récursif a un temps d'exécution exponentiel, alors qu'avec une implémentation non récursive par une boucle est incomparablement plus rapide que ce soit en java comme en c++ (plusieurs secondes dans les 2 langages pour faire un fibonacci de 40 alors qu'avec un algo avec une simple boucle ne prend que quelque millisecondes dans les 2 langages pour un fibonacci de 1000, a tel point qu'il devient difficile de comparer les 2 car augmenter le paramètre ne change presque plus rien)

  20. #1160
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par kpouer Voir le message
    J'ajouterai aussi que le test en plus d'être récursif a un temps d'exécution exponentiel, alors qu'avec une implémentation non récursive par une boucle est incomparablement plus rapide
    Ou équivalent récursif terminal. Mais ce que tu dis n'est pas intéressant : Evidemment qu'avec une boucle en O(n) c'est plus rapide qu'avec un algorithme exponentiel (qu'il soit récursif ou non), c'est d'ailleurs nettement plus lent que les meilleurs algorithmes récursifs qui sont sublinéaires.
    Ce benchmark est utilisé pour tester l'efficacité de la récursion classique dans un langage donné, pas pour vérifier à quelle vitesse un langage peut calculer Fibonacci ! C'est comme si on te montrait un marathon et tu demandais pourquoi les coureurs n'utilisaient pas plutôt une voiture...

    --
    Jedaï

Discussions similaires

  1. [Débat] Technologie .NET vs JAVA
    Par neo.51 dans le forum Débats sur le développement - Le Best Of
    Réponses: 1047
    Dernier message: 14/01/2019, 16h15
  2. [Débat] .NET vs JAVA/J2EE
    Par tssi555 dans le forum VB.NET
    Réponses: 5
    Dernier message: 10/12/2008, 07h54

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