Python 2.x vs 3.X Vitesse

Je suis doctorant et j'utilise Python pour écrire le code que j'utilise pour mes recherches. Mon flux de travail consiste souvent à apporter une petite modification au code, à exécuter le programme, à voir si les résultats se sont améliorés et à répéter le processus. Pour cette raison, je me retrouve à passer plus de temps à attendre que mon programme fonctionne que je n'y travaille réellement (une expérience commune, je sais). J'utilise actuellement la version la plus récente de Python 2 sur mon système, donc ma question Est de savoir si le passage à Python 3 va me donner un coup de pouce de vitesse ou non. À ce stade, je n'ai pas vraiment de raison impérieuse de passer à Python 3, donc si les vitesses d'exécution sont similaires, je vais probablement rester avec 2.X. Je sais que je vais devoir modifier un peu mon code pour le faire fonctionner en Python 3, Il n'est donc pas trivial de le tester sur les deux versions pour voir qui s'exécute plus rapidement. Je devrais être raisonnablement confiant que je vais obtenir une amélioration de la vitesse avant de passer le temps à mettre à jour mon code en Python 3.

35
demandé sur Colin 2010-01-21 22:43:17

5 réponses

Cet article (archive.org) a dit qu'il y avait quelques points où Python 3.0 était en fait plus lent que python 2.6, bien que je pense que beaucoup de ces problèmes ont été résolus. Cela étant dit, Numpy n'a pas encore été amené à Python 3.0 et c'est là que se cache une grande partie de la fonctionnalité de nombre haute performance (écrite en c). espérons qu'il sera prêt fin 2009 ou début 2010.

vous ne devriez pas considérer la performance comme une justification pour changer pour Python 3; Je ne pense pas que vous verrez une amélioration constante de la vitesse.

Edit: des Versions de Numpy prenant en charge Python 3 ont depuis été publiées.

Edit2: Cette réponse (et d'autres réponses à cette question) sont dépassées.

23
répondu Brian 2014-10-10 21:06:22

En ce moment, la vitesse sur Python 3 est plus ou moins la même que Python 2... Si vous cherchez de la vitesse, ce n'est pas sur Python 3 vs Python 2 mais dans D'autres outils comme Psyco, Cython, etc...

Mais, très récemment, il y a eu des plans pour fusionner Unladen Swallow, le projet Google pour implémenter un JIT sur Python avec Python 3. Bien sûr, ce ne sera pas très bientôt, mais, dans un certain temps, peut-être que la vitesse augmentera sensiblement sur Python 3 sur Python 2. Ils prétendent avoir déjà augmenté vitesse sur un 10% (sur Python 2). Leur objectif est d'augmenter la vitesse à 5x.

Pour plus d'informations, voir PEP 3146

EDIT: tout comme Brian remarque, PEP 3146 a été retiré.

5
répondu Khelben 2011-11-10 15:40:01

Essayez d'affiner les algorithmes ou de modifier les structures de données utilisées. C'est généralement la meilleure façon d'obtenir une augmentation du rendement.

3
répondu Rudolf Olah 2010-01-22 07:12:55

Je ne peux pas répondre à la racine de votre question, mais si vous lisez quoi que ce soit concernant les performances léthargiques du module io, veuillez ne pas en tenir compte. Les problèmes de performance étaient certainement dans Python 3.0, mais ils ont été largement résolus dans Python 3.1.

2
répondu Eric Palakovich Carr 2010-01-21 19:48:50

J'ai une analyse phylogénétique qui prend beaucoup de temps à exécuter, et utilise environ une demi-douzaine de scripts python ainsi que d'autres logiciels de Bioinformatique (muscle, clustal, blast, même R!). J'utilise des fichiers temporaires pour enregistrer les résultats intermédiaires et un script maître avec le module subprocess pour coller toutes les pièces ensemble. Il est facile de changer le maître pour exécuter uniquement les pièces modifiées que je veux tester. Mais, si les changements sont apportés aux premières étapes, et vous ne savez à quel point il est bon à la fin de tout le processus, alors cette stratégie n'aiderait pas beaucoup.

2
répondu telliott99 2010-01-21 20:58:54