Principaux points à retenir
- Les idées reçues sur les performances de Python — par exemple croire qu’il suffit d’utiliser un compilateur JIT ou d’ajouter des annotations de type pour obtenir un gain majeur — sont trompeuses.
- Les schémas d’accès mémoire inefficaces, dus au typage dynamique et au modèle objet de Python, constituent le véritable goulet d’étranglement des performances.
- La gestion de la mémoire est la limite ultime à l’amélioration des performances de Python, et sans résoudre ce point, il est difficile d’obtenir de véritables gains.
- Comme alternative de long terme pour s’attaquer à ces problèmes de fond, un nouveau projet, « SPy », a été présenté.
Détails
Antonio Cuni, développeur historique de PyPy, a donné à l’EuroPython 2025 une présentation intitulée « Mythes et contes de fées sur les performances de Python ». Il y souligne que de nombreuses idées reçues sur les performances de Python ne correspondent pas à la réalité.
Selon Cuni, les compilateurs JIT (Just-In-Time) contribuent bien à améliorer les performances, mais ne constituent pas une solution miracle. Même lorsque le JIT optimise le code, il ne peut pas résoudre le problème fondamental d’une mauvaise efficacité du cache, causé par la structure mémoire des objets Python ainsi que par les fréquents schémas d’allocation et de libération de mémoire.
Il a également expliqué que le contrôle statique des types (Static Type Checking), très utilisé ces derniers temps, n’améliore pas directement les performances de CPython. Les annotations de type rendent le code plus clair, mais la nature dynamique de Python reste un obstacle lorsque le compilateur JIT tente d’exploiter ces informations pour optimiser le code de manière plus agressive.
En conclusion, Cuni a insisté sur le fait que la véritable limite des performances de Python ne se situe pas au niveau de la vitesse du CPU, mais de la gestion de la mémoire. Il a présenté « SPy » comme un projet encore précoce visant à résoudre ce problème, en avançant l’idée qu’il faudra refondre en profondeur le modèle mémoire de Python pour parvenir à créer un Python réellement ultra-rapide.
Aucun commentaire pour le moment.