Amélioration des performances de CPython : une histoire de rebondissements inattendus et de régressions LLVM
Une fusion récente de CPython a introduit une nouvelle implémentation de l’interpréteur de bytecode, montrant initialement des gains de performance impressionnants de 10 à 15 % sur divers benchmarks. Cependant, cette amélioration provenait du contournement involontaire d’une régression de LLVM 19. Comparé à une meilleure ligne de base (comme GCC ou LLVM 19 optimisé), l’augmentation réelle des performances se réduit à seulement 1 à 5 %. Des semaines de compilation, de benchmarking et de désassemblage ont révélé que les limitations de LLVM 19 sur la duplication des appels de queue étaient à l’origine de la régression. Bien que l’interpréteur d’appels de queue soit une amélioration précieuse, cet incident met en évidence les défis du benchmarking, de l’ingénierie des performances et de l’ingénierie logicielle, tels que la difficulté de choisir des lignes de base et de comprendre la complexité des optimisations du compilateur.