HeadlinesBriefing HeadlinesBriefing.com

JIT Python 3.15 vs 3.14 : benchmarks

Towards Data Science •
×

L'auteur a relancé trois benchmarks Python d'un test précédent sous Python 3.14 et Python 3.15, avec le compilateur JIT activé et désactivé dans chaque version. Lors du précédent essai, le JIT de 3.14 avait accéléré un calcul de Mandelbrot d'environ 25 % et les calculs de distance de Levenshtein de 27 %, tandis qu'une recherche de graphe de Dijkstra n'avait connu aucune amélioration.

Python 3.15 a considérablement reconstruit le JIT. La version 3.14 prédisait les chemins de code probables, alors que la 3.15 utilise un nouveau front end de traçage qui enregistre le chemin réellement emprunté par le programme. L'optimiseur gagne également une allocation de registres de base, davantage de propagation de constantes et moins d'opérations sur les compteurs de références. La génération de code pour x86-64 et AArch64 a été améliorée, et le code machine produit consomme moins de mémoire.

Tester les quatre configurations (3.14 et 3.15, chacune avec le JIT activé et désactivé) permet de séparer l'effet des changements de l'interpréteur dans la 3.15 de celui de son JIT. Ce point est important, car une comparaison directe entre 3.14 et 3.15 pourrait être trompeuse. L'interpréteur de 3.15 comprend aussi des modifications hors JIT, notamment un changement de l'interpréteur utilisé par les versions officielles 64 bits pour Windows.

L'équipe de publication de Python annonce une amélioration de la moyenne géométrique de 7 % à 8 % par rapport à l'interpréteur standard sur sa suite de benchmarks Linux x86-64, et de 11 % à 12 % sur macOS AArch64. LLVM 21 n'est nécessaire qu'à la compilation, si bien que les utilisateurs des binaires officiels n'ont pas besoin de l'installer.

La nouvelle série de tests de l'auteur montre que le JIT plus puissant aide davantage ces trois charges de travail, mais qu'il ne profite toujours pas à tous les programmes, en particulier à ceux qui passent leur temps à allouer des objets et à appeler des opérations implémentées ailleurs.

Source: Towards Data Science · Résumé par HeadlinesBriefing