Je suis un étudiant en doctorat 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 s'améliorent et à répéter le processus. De ce fait, je passe plus de temps à attendre l'exécution de mon programme qu'à travailler sur celui-ci (une expérience courante, je sais). J'utilise actuellement la version la plus récente de Python 2 sur mon système. Ma question est donc de savoir si le passage à Python 3 va me permettre de gagner en 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 m'en tenir à la version 2.x. Je sais que je vais devoir modifier un peu mon code pour le faire fonctionner dans Python 3, donc il n'est pas trivial de le tester sur les deux versions pour voir laquelle s'exécute le plus rapidement. J'ai besoin d'être raisonnablement sûr d'obtenir une amélioration de la vitesse avant de passer du temps à mettre à jour mon code vers Python 3.
Réponses
Trop de publicités?Cet article 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. Ceci étant dit, Numpy n'a pas encore été transféré vers Python 3.0 et c'est là que se cache une grande partie de la fonctionnalité numérique haute performance (écrite en c). Espérons qu'il sera prêt fin 2009 ou début 2010 .
Vous ne devriez pas considérer les performances comme une justification pour passer à Python 3 ; je ne pense pas que vous verrez une amélioration constante de la vitesse.
Edit : Les versions de Numpy qui supportent Python 3 ont été publiées depuis.
Actuellement, la vitesse sur Python 3 est plus ou moins la même que sur Python 2... Si vous recherchez 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 a été question de fusionner Unladen Swallow, le projet de Google visant à implémenter un JIT sur Python avec Python 3. Bien sûr, ce ne sera pas pour tout de suite, mais, dans quelque temps, la vitesse augmentera peut-être sensiblement sur Python 3 par rapport à Python 2. Ils prétendent avoir déjà augmenté la vitesse de 10% (sur Python 2). Leur objectif est d'augmenter la vitesse de 5 fois.
Pour plus d'informations, voir PEP 3146
EDIT : Comme le fait remarquer Brian, le PEP 3146 a été retiré.
J'ai une analyse phylogénétique qui prend beaucoup de temps à exécuter, et qui 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 sauvegarder 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 modifier le maître pour n'exécuter que les parties modifiées que je veux tester. Mais, si les modifications sont apportées aux premières étapes, et que vous ne connaissez la qualité qu'à la fin de tout le processus, alors cette stratégie ne serait pas d'une grande aide.