Bonjour,
J'ai un souci concernant la performance(Temps d'exécution) de la programmation avec le langage java. Pour un programme plus rapide, Est ce qu'il est préférable de travailler avec java C ou C++?
Version imprimable
Bonjour,
J'ai un souci concernant la performance(Temps d'exécution) de la programmation avec le langage java. Pour un programme plus rapide, Est ce qu'il est préférable de travailler avec java C ou C++?
Pour être plus rapide, il est préférable de coder des algorithmes efficaces. Le langage n'a pas grand-chose à voir avec ça, sauf s'il te rend la vie plus dure ou plus facile pour écrire des algorithmes efficaces.
Dans la plupart des cas, et à efficacité des algorithmes égale ce qui n'est pas évident à faire, coder en C permettra de gagner quelques miettes de secondes sur une semaine d'exécution, par rapport à C++, et C++ de même par rapport à Java.
Dans des cas plus spécialisés, C et C++ seront bien plus rapides que Java (traitement d'image, calcul numérique lourd sur de très grandes quantités de données en mémoire, ce genre de choses.) Et dans quelques autres Java sera bien plus rapide que les autres, à moins que les autres travaillent très dur à reproduire ses optimisations.
Bref, c'est pas ça qui est important, tu t'en sortiras pas si tu penses comme ça. Les langages sont rapides. Ce sont les autres critères qui doivent décider lequel on utilise.
bonjour
contrairement aux idées reçues (java = beaucoup plus lent que C++)
c'est en fait vraiment kif-kif !
voir par exemple ce benchmark de juin 2010 sur quelques algos basiques.
http://blog.cfelde.com/2010/06/c-vs-java-performance/
Salut,
+1
Sauf cas particulier et/ou erreur de conception, la différence ne sera pas énorme et peut varier d'un "camp" à l'autre.
Le problème c'est que les conceptions sont pas les mêmes et qu'il est donc difficile de comparer (une conception typé C++ n'est pas le meilleur choix en Java, et inversement).
a++
Si on compare la performance d'un programme selon le système d'exploitation( par exemple Windows et Linux), est ce qu'un même programme écrit avec le langage java mais déroulé sur ces 2 plateformes différentes donne des performances différentes en termes de temps d'exécution?
windows linux c'est vague. quel windows, quel distribution linux ?
désolé, je n'ai pas pensé que la performance diffère aussi selon la distribution :oops:.
En tout cas je suis en train de parler de Windows 7 et Ubuntu.
Ce qui va encore changer les chose c'est la version de java utilisé a mon avis.
Pour une même version de JRE, je répondrais comme adiGuba : "Sauf cas particulier [...] la différence ne sera pas énorme et peut varier d'un "camp" à l'autre. ". Les différences de performance seront trop marginales pour être probantes ce qui tombe bien car la philosophie de Java c'est tout de même d'être multiplateforme.
Faut voir le temps d'exécution de quoi, aussi ? t'as un tel problème de performances ? parce que bon, c'est tout de même assez rare, avec les machines actuelles, d'avoir des soucis de temps d'exécution, pour des applis normales... En plus, n'est pas certain du tout que les performances de ton appli dépendent davantage du langage de programmation que par exemple de la vitesse du disque dur, ou de la qualité de la programmation...
J'ai besoin de tester un grand volume de données. La performance depond de plusieurs paramètres parmi lesquels le temps d'exécution. Par exemple les tests faits sur Data Set 1 tourné avec algorithme 1 donnent 3h et 1.14h pour algorithme 2. Pour Data Set 2, les tests donnent 52,5h pour algorithme et 4.4h pour algorithme(statistiques énoncés par des chercheurs). cette différence énorme depond clairement de l'algorithme choisi ainsi que de Data Set mais je veux savoir les autres causes de cette différence.
Il peut y avoir aussi un soucis d'utilisation du ou des processeurs par l'implémentation de l'algo : il faut aussi comparer le %age d'utilisation CPU selon l'algo... Le tout toujours sur le même ordi ...?
Ben s'il n'y a que l'algo qui change le problème vient de là !
Lorsqu'on manipules de grosses quantités de données, un mauvais algo peut vraiment pourrir des performances.
Il suffit par exemple qu'il crée inutilement plusieurs d'objets temporaires. Sur une jeu de données réduits cela peut être anodin, mais cela peut tout devenir exponentielle lorsqu'on augmente la quantité de données...
a++
merci pour vos réponses :)
si tu fais le test avec meme algo, meme dataset, meme modele de machine entre windows et ubuntu, n'oublie pas de venir nous donner tes resultats :zoubi:
dès que je terminerai, promis je vous contacterai :).
pour le même algorithme, même dataset, même modèle de machine et en utilisant Java sous Eclipse, j'ai eu les mêmes résultats (temps d'exécution et accuracy) sous Windows 7 et Ubuntu 11.10. :)Citation:
si tu fais le test avec meme algo, meme dataset, meme modele de machine entre windows et ubuntu, n'oublie pas de venir nous donner tes resultats