Contexte et méthodologie

L’auteur a exécuté deux scripts Python – fibo.py (calcul récursif des 40 premiers nombres de Fibonacci) et bubble.py (tri à bulles de 10 000 entiers aléatoires) – sur plusieurs versions de CPython (3.10 à 3.15), ainsi que sur les variantes JIT et free‑threading introduites à partir de 3.13. Chaque test a été répété trois fois sur un ordinateur portable Linux équipé d’un processeur Intel Core i5, la moyenne des durées étant retenue. Des comparaisons ont également été faites avec PyPy 3.12, Node 26.3 et Rust 1.97 afin de placer les résultats dans un contexte plus large.

Résultats du benchmark fibo (single‑thread)

Le temps moyen pour fibo(40) sous CPython 3.15 est de 6,94 s, soit un facteur 1,03 par rapport à la même version (auto‑référence) et 0,97 x par rapport à 3.14 (6,94 s ÷ 7,17 s). Les versions antérieures affichent des durées plus élevées : 3.14 = 7,17 s, 3.13 = 8,82 s, 3.12 = 8,85 s, 3.11 = 9,41 s, 3.10 = 15,94 s. PyPy 3.12 réalise le même calcul en 1,25 s, soit 5,54 x plus rapide que CPython 3.15. Node.js atteint 1,39 s (4,99 x) et Rust 0,09 s (77,24 x). Ces écarts confirment que les implémentations JIT et compilées restent largement supérieures pour les charges fortement récursives.

Résultats du benchmark bubble (single‑thread)

Pour le tri de 10 000 nombres, CPython 3.15 enregistre 1,97 s, soit 1,04 x la vitesse de référence et 0,96 x celle de 3.14 (2,06 s). Les versions précédentes varient de 2,84 s (3.13) à 3,99 s (3.10). PyPy 3.12 termine en 0,11 s (18,37 x plus rapide), Node.js en 0,06 s (30,66 x) et Rust en 0,01 s (environ 200 x). Le gain marginal entre 3.14 et 3.15 (environ 4 %) représente la plus petite amélioration observée parmi les versions stables, tandis que les sauts majeurs restent concentrés sur 3.11 et 3.14.

Analyse des variantes JIT et free‑threading

Le JIT introduit à 3.13 montre une durée de 5,76 s pour fibo(40), soit 1,20 x plus rapide que l’interpréteur standard 3.15. Cette amélioration n’était pas présente dans les versions antérieures, où le JIT était plus lent que le standard. En mode free‑threading, les temps restent proches de ceux de la version standard 3.14 (7,12 s) et de 3.15 (7,03 s), ce qui est attendu puisque le test est mono‑threadé. Aucun avantage notable n’est détecté pour les charges CPU‑bound sans parallélisme explicite.