Performances de Python 3.*

Bonne nouvelle, il semble que les performances de Python 3 s’améliorent significativement. Nous sommes nombreux à avoir constaté un effondrement des performances surtout lors de l’utilisation d’itérateurs. J’avais évoqué ce problème en comparant les temps de construction d’un arbre binaire à partir de données récupérées depuis une base MongoDB (avec pymongo). Pour mémoire le chargement de 50.563 articles dans le graphe prenait environ 0,9 secondes avec Python 2.7.3 et 12,9 secondes avec Python 3.2.3. La différence est énorme.

Tableau récapitulatif (temps exprimé en secondes)
Nombre d’articles chargés
dans le graphe
50.563 50.563 50.563 50.563 52.912
Phase Python 2.7.3 Python 3.1.3 Python 3.2.3 3.3.1rc1 3.3.1rc1
Chargement des articles 0,94903397 5,785764 12,9370689 0,5322029 0,5537478
Génération de l’arbre 4,757379 4,3168029 2,733838 2,491816 3,000731
Exécution globale du script 5,950 11,461 15,958 3,225 3,771

Observez les temps en italique dans le tableau (phase Chargement des articles). Python 3.3.1 fait mieux que Python 2.7.3 alors que Python 2.7.3 était beaucoup plus rapide que Python 3.2.3. Le progrès est incontestable, je n’ai rien changé au code utilisé pour ce benchmark. Les améliorations concernant les itérateurs profitent largement à pyAggr3g470r. Si vous utilisez pyAggr3g470r, je vous recommande donc chaudement d’installer Python 3.3.

Pour la phase Génération de l’arbre, avec Python 3.3.1 nous sommes à 2,49 secondes et avec Python 2.7.3 à 4,75 secondes. C’est beaucoup mieux et les itérateurs ne sont pas utilisés à ce niveau. Voyez l’implémentation de l’arbre binaire ordonné utilisée.

Le développement de Python va dans la bonne direction. J’espère que Python 3 sera bientôt par défaut sur la majeure partie des distributions GNU/Linux.

One Reply to “Performances de Python 3.*”

Comments are closed.