CPython-Performanceverbesserung: Eine Geschichte unerwarteter Wendungen und LLVM-Regressionen

2025-03-10

Eine kürzlich erfolgte CPython-Zusammenführung führte eine neue Implementierung des Bytecode-Interpreters ein, die anfänglich beeindruckende Performance-Verbesserungen von 10 bis 15 % in verschiedenen Benchmarks zeigte. Diese Verbesserung resultierte jedoch aus der unbeabsichtigten Umgehung einer Regression in LLVM 19. Im Vergleich zu einer besseren Baseline (wie GCC oder optimiertem LLVM 19) reduziert sich der tatsächliche Performance-Gewinn auf nur 1 bis 5 %. Wochenlange Kompilierung, Benchmarking und Disassemblierung zeigten, dass die Einschränkungen von LLVM 19 bei der Tail-Call-Duplizierung die Regression verursachten. Obwohl der Tail-Call-Interpreter eine wertvolle Verbesserung darstellt, hebt dieser Vorfall die Herausforderungen beim Benchmarking, der Performance-Engineering und der Software-Entwicklung hervor, wie z. B. die Schwierigkeit bei der Auswahl von Baslines und das Verständnis der Komplexität von Compiler-Optimierungen.

Entwicklung