Performances python C++

Le
JBB
Il est dit que c++ est plus performant que python.
Cela reste relatif. Voici un exemple:

s = ""
for x in range(100000):
s = s + "jbb"

et le même en C++

std::string s = ""
for (x = 0;x < 100000;x++):
s = s + "jbb"

si vous faites le test vous verez que le python est bien plus performant !! ( au moins 10 fois plus rapide)

Mais comment cela se fait il?

En fait un codeur C++ un peu plus experimenté écrirait:
std::string s = ""
for (x = 0;x < 100000;x++):
s += "jbb" //subtile difference
et la du coup C++ reprend l'avantage ( facteur 2 chez moi)

mais un codeur python plus experimenté pourrait écrire:
s = "jbb"*100000


Bref, tout est relatif, et si vous n'êtes pas un expert C++ (ni python) il n'est pas impossible
que votre code python soit plus performant que si vous l'écriviez en C++
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Rakotomandimby (R12y) Mihamina
Le #630223
JBB -
Bref, tout est relatif, et si vous n'êtes pas un expert C++ (ni python)
il n'est pas impossible que votre code python soit plus performant que si
vous l'écriviez en C++...


Et si on est expert des deux?

--
"C'est très facile d'avoir des idées de partage quand on n'a rien."
Patrice KARATCHENTZEFF

MC
Le #630222
Bonsoir !

Mais, moi, je pense qu'il faut comparer ce qui est comparable.

Par exemple, ce code Python :


v=raw_input("valeur :")
t=0
for i in xrange(100000):
t+=eval(v)
print t


Et on entre qq. chose comme : +54321*31415*100*555*666*777*888*999-1



Et, vous noterez les avantages concédés à C++ : entiers très longs
(mais on peut mettre des flottants), exécution dynamique du calcul, ...



PS : perso, je ne sais pas écrire le code C équivalent.

--
@-salutations

Michel Claveau
NicolasP
Le #630218

PS : perso, je ne sais pas écrire le code C équivalent.

Moi si. Mais j'ai pas envie :P


Nicolas

Blaise Li
Le #629839
JBB wrote in message
std::string s = ""
for (x = 0;x < 100000;x++):
s = s + "jbb"

[...]

En fait un codeur C++ un peu plus experimenté écrirait:
std::string s = ""
for (x = 0;x < 100000;x++):
s += "jbb" //subtile difference
et la du coup C++ reprend l'avantage ( facteur 2 chez moi)


Il n'y a pas une phase de compilation intelligente qui fait que les deux
façons de coder aussi peu différentes devraient aboutir au même
exécutable en fin de compte ? Et si non, d'où vient la différence ?

bli

Jan Vorwerk
Le #629719
Blaise Li a écrit , le 05.07.2007 19:35:
JBB wrote in message
std::string s = ""
for (x = 0;x < 100000;x++):
s = s + "jbb"

[...]

En fait un codeur C++ un peu plus experimenté écrirait:
std::string s = ""
for (x = 0;x < 100000;x++):
s += "jbb" //subtile difference
et la du coup C++ reprend l'avantage ( facteur 2 chez moi)


Il n'y a pas une phase de compilation intelligente qui fait que les deux
façons de coder aussi peu différentes devraient aboutir au même
exécutable en fin de compte ? Et si non, d'où vient la différence ?

bli


Normalement, un compilo' moyen devrait générer le même code.

Il serait intéressant de voir avec quel compilo' on observe de telles
différences (facteur 2!!) et le réserver à des applications non critiques.
Au boulot, j'utilise (contre mon gré) M$ Visual Studio.NET (la première
version) et le code généré n'est vraiment pas brillant.

A++


hg
Le #629718
JBB wrote:

Il est dit que c++ est plus performant que python.
Cela reste relatif. Voici un exemple:

s = ""
for x in range(100000):
s = s + "jbb"

et le même en C++

std::string s = ""
for (x = 0;x < 100000;x++):
s = s + "jbb"

si vous faites le test vous verez que le python est bien plus performant
!! ( au moins 10 fois plus rapide)

Mais comment cela se fait il?

En fait un codeur C++ un peu plus experimenté écrirait:
std::string s = ""
for (x = 0;x < 100000;x++):
s += "jbb" //subtile difference
et la du coup C++ reprend l'avantage ( facteur 2 chez moi)

mais un codeur python plus experimenté pourrait écrire:
s = "jbb"*100000


Bref, tout est relatif, et si vous n'êtes pas un expert C++ (ni python)
il n'est pas impossible que votre code python soit plus performant que si
vous l'écriviez en C++...


Une des question est: compilo ou pré-processeur ?

ex: je me souviens du pré-processeur d'ATT (qui donc prenait du C++ et
crachait du C immangeable ;-) ) ... on passait le résultat dans un compilo
C standard et obtenaient des résultats très impressionnants (ils
s'agissaient de cross-compilo pour de l'embarqué)

As-tu passé le mode -Ox ?

hg

Publicité
Poster une réponse
Anonyme