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

C Discussion :

Vitesse : C Versus Java


Sujet :

C

  1. #1
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut Vitesse : C Versus Java
    Bonjour,

    si on prend deux codes quasiment identiques, l'un écrit en C, l'autre en Java, je sais que l'exécution du code C est un peu plus rapide que celui de Java car Java doit passer par la JVM.

    Ce que j'aimerai savoir, c'est :
    - Avec les dernières JVM, à combien exactement se monte cet écart.

    Merci par avance...


    PS : Je ne souhaite pas lancer un débat... juste avoir une réponse...
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  2. #2
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par ToTo13
    Bonjour,

    si on prend deux codes quasiment identiques, l'un écrit en C, l'autre en Java, je sais que l'exécution du code C est un peu plus rapide que celui de Java car Java doit passer par la JVM.

    Ce que j'aimerai savoir, c'est :
    - Avec les dernières JVM, à combien exactement se monte cet écart.

    Merci par avance...


    PS : Je ne souhaite pas lancer un débat... juste avoir une réponse...
    Impossible à dire... Cela dépend sûrement de la machine, ce qui tourne dessus comme système d'exploitation, quelles sont les versions des compilateurs C et Java. Quelle est la version du JVM ?

    La seule facon d'avoir une réponse à cette question est de faire soi-même les tests puisque tu es le mieux placé pour savoir quels sont tes besoins (quel genre de programme, quelles versions seront utilisées...)

    Jc

  3. #3
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Surtout comment c'est implémenté, et quel algorithme est utilisé...

    Si on ne sait pas coder en C, on peut faire des programmes plus rapides en JAVA qu'en C....

    Pour résumer, en C, on peut tendre vers le maximum de performance possible de la machine, en JAVA on peut tendre vers le maximum de performance possible de la JVM qui peut tendre vers le maximum de performance possible de la machine. Donc comme tu l'as signalé, logiquement, si les 2 programmes sont très bien programmés, on aura, temps d'exécution du C inférieur ou égal au JAVA.

    Mais la quantification sur un programme complet est impossible.

  4. #4
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par ToTo13
    PS : Je ne souhaite pas lancer un débat... juste avoir une réponse...
    Alors c'est simple. Fait des mesures.
    Pas de Wi-Fi à la maison : CPL

  5. #5
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    Citation Envoyé par Emmanuel Delahaye
    Alors c'est simple. Fait des mesures.
    Je voulais juste savoir si des tests existaient...

    Merci à tous !!!
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  6. #6
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par ToTo13
    Je voulais juste savoir si des tests existaient...
    Vu qu'ils dépendent de la machine, du système, de l'implémentation des langages et des phases de la lune, je vois mal comment ce serait possible...

    Si tu fais des mesures, n'oublie pas de relever précisément les conditions de mesures, sinon, les-dites mesures n'ont aucun sens... Simple démarche scientifique standard...

    Et garde toi bien d'en tirer quelque conclusion générale ou définitive que ce soit.
    Pas de Wi-Fi à la maison : CPL

  7. #7
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    des phases de la lune


    Tu as oublié les neutrons de l'atmosphère

  8. #8
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par Ti-R


    Tu as oublié les neutrons de l'atmosphère
    Il y a déjà eu au moins un bug qui dépendait des phases de la lune. Un buffer overflow dans un programme qui affichait la date et la phase de la lune si la phase la plus longue avait lieu au jour de la semaine le plus long
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  9. #9
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    Il y a déjà eu au moins un bug qui dépendait des phases de la lune. Un buffer overflow dans un programme qui affichait la date et la phase de la lune si la phase la plus longue avait lieu au jour de la semaine le plus long
    Des bugs à cause des neutrons dans l'atmosphère il y en a tous les jours

    Voir ce mini article

  10. #10
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    Il y a déjà eu au moins un bug qui dépendait des phases de la lune. Un buffer overflow dans un programme qui affichait la date et la phase de la lune si la phase la plus longue avait lieu au jour de la semaine le plus long
    On en rigole mais je crois que un des crash du lanceur de la fusée Ariane c'était du à un programme en C mal conçu..
    Aaahh ! S'il y avait un Garbage Collector pour le C
    Ce serait la Maison du Bohneur

  11. #11
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par mat.M
    On en rigole mais je crois que un des crash du lanceur de la fusée Ariane c'était du à un programme en C mal conçu..:
    Le vol 501 ? Non, problème de dépassement de capacité. Réutilisation d'un logiciel non prévu à cet effet...
    # Un des cas les plus spectaculaires est celui de la fusée européenne Ariane 5, qui a coûté plus d'un milliard de dollars. Quelques instants après le décollage, elle fut détruite à cause d'une erreur de l'ordinateur de guidage embarqué à bord de l'appareil. Toutefois, dans ce cas, le terme "bogue" est quelque peu impropre : en effet, "l'erreur" a consisté à reprendre à l'identique l'ordinateur et le logiciel utilisé sur Ariane 4 pour la gestion des centrales inertielles de guidage, ordinateur et logiciel qui fonctionnaient parfaitement sur cette fusée ; Ariane 5 étant plus rapide qu'Ariane 4, ledit ordinateur a vu sa capacité de traitement rapidement saturée, avec les coûteuses conséquences que l'on connaît ...
    http://sunnyday.mit.edu/accidents/Ar...entreport.html
    Pas de Wi-Fi à la maison : CPL

  12. #12
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par mat.M
    On en rigole mais je crois que un des crash du lanceur de la fusée Ariane c'était du à un programme en C mal conçu..
    Aaahh ! S'il y avait un Garbage Collector pour le C
    Ce serait la Maison du Bohneur
    Il y a eu de multiples erreurs... celles dont je me souviens:
    - laisser un composant déclancher l'auto-destruction de la fusée alors qu'il n'avait plus d'utilité à ce moment-là
    - avoir réutiliser un composant sans vérifier que ses hypothèses étaient toujours valides, en se fiant au test d'intégration final, puis supprimer la partie du test d'intégration final qui concernait ce composant

    Sinon ce qui s'est passé, c'est que les trajectoires de Ariane 4 et Ariane 5 étant différentes, une valeur intermédiaire a eu un dépassement de capacité qui a été détectée et lors de la conception, il avait été décidé que si le cas arrivait, c'est qu'il y avait un problème hard, donc shut down du composant. Le double a évidemment eu le même problème. Un composant de contrôle a alors demandé autodestruction alors que le composant en défaut ne servait déjà plus.

    Au fait, le programme en question était en Ada.

    Edit: au cas où ça intéresse quelqu'un, le rapport de la commission est disponible ici, je ne l'ai pas relu et ce que j'ai écrit ci-dessus, c'est de mémoire.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  13. #13
    mat.M
    Invité(e)
    Par défaut
    Ok merci JM et Emmannuel pour les précisions
    Dernière modification par mat.M ; 14/09/2006 à 16h55.

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 33
    Points : 27
    Points
    27
    Par défaut
    Bonjour,

    j'avais récemment réalisé des tests de performance dans ce sens, sauf que je comparais C++ et Java. Il y a eu beaucoup de débat sur le net à ce sujet et plusieurs sites traitent de ce sujet. Ce qui a été intéressant à noter, c'est que selon le programme (divers calculs mathématiques : Fibonacci, calculs sur des matrices, etc) les performances étaient soit à l'avantage du C++ soit de Java.

    Malgré la présence de ces résultats de tests, ils ne reflétent que les performances avec les machines testées ainsi que la version de la JVM.

    Par ailleurs, il faut faire attention aux implémentations proposées. J'avais trouvé des freins de performance dans les codes sources des applis testées...

    Pour info, si des fois Java est plus performant que C++, c'est que la JVM peut réaliser des pré-traitements. Par exemple, elle sait transformer un tableau en 2 dimensions en tableau à une seule dimension. En conséquence, les accès sont plus rapides.

    De plus il ne faut pas oublier que le code Java peut etre compilé en code natif de la machine, ce qui rend ses performances vraiment proches du max de la machine.

  15. #15
    Membre éclairé Avatar de HanLee
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 738
    Points : 871
    Points
    871
    Par défaut
    Citation Envoyé par Ti-R
    Des bugs à cause des neutrons dans l'atmosphère il y en a tous les jours

    Voir ce mini article
    D'ailleurs le Science & Vie de Septembre 2006 consacre un article sur ce sujet.

  16. #16
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par evguen
    Pour info, si des fois Java est plus performant que C++, c'est que la JVM peut réaliser des pré-traitements. Par exemple, elle sait transformer un tableau en 2 dimensions en tableau à une seule dimension. En conséquence, les accès sont plus rapides.
    Curieux. En C (en probablement en C++), un tableau statique à deux (ou N) dimensions, ça n'existe pas. Ce n'est qu'un tableau linéaire dont l'accès est calculé à partir de 2 (ou N) coordonnées.

    J'ai du mal à croire que ce soit différent en Java...
    Pas de Wi-Fi à la maison : CPL

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. C# versus Java
    Par laffreuxthomas dans le forum C#
    Réponses: 368
    Dernier message: 30/03/2019, 23h59
  2. Temps de compilation C++ versus Java
    Par ZeRevo dans le forum Eclipse C & C++
    Réponses: 0
    Dernier message: 16/12/2011, 14h34
  3. Que choisir : PHP versus Java ?
    Par Sniper37 dans le forum Général Conception Web
    Réponses: 164
    Dernier message: 28/04/2009, 17h50
  4. Réponses: 1
    Dernier message: 12/05/2006, 20h55
  5. WinDev versus Java
    Par Tijee dans le forum WinDev
    Réponses: 4
    Dernier message: 29/01/2006, 11h15

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