- Der JIT-Compiler von CPython erreicht 11–12 % mehr Leistung auf macOS AArch64 und 5–6 % auf x86_64 Linux und erfüllt damit das Ziel früher als geplant
- In den Versionen 3.13–3.14 war der JIT langsamer als der Interpreter, doch durch community-getriebene Entwicklung und strukturelle Verbesserungen wurde die Leistung deutlich gesteigert
- Experimentelle Ansätze wie Trace Recording und Reference Count Elimination waren wichtige Wendepunkte
- Zentrale Mitwirkende wie Savannah Ostrowski, Mark Shannon, Diego Russo, Brandt Bucher und viele neue Beteiligte arbeiteten gemeinsam daran
- Das Ergebnis zeigt, dass community-getriebene Entwicklung und eine Kultur der Zusammenarbeit Open-Source-Leistung real verbessern können
Aktueller Stand der CPython-JIT-Leistungsverbesserung
- Auf macOS AArch64 wurde eine um 11–12 %, auf x86_64 Linux eine um 5–6 % höhere Leistung gemessen
- Die Werte basieren auf dem geometrischen Mittel; je nach Benchmark reicht die Spanne von 20 % langsamer bis über 100 % schneller
- Die Unterstützung für free-threading ist noch nicht abgeschlossen und ist für die Versionen 3.15/3.16 vorgesehen
- In den Versionen 3.13–3.14 war der JIT langsamer als der Interpreter, in dieser Version wurde nun jedoch eine spürbare Beschleunigung erreicht
Community-getriebene JIT-Entwicklung
- Nach dem Ende der wichtigsten Förderung des Faster-CPython-Teams im Jahr 2025 wurde auf ein community-getriebenes Entwicklungsmodell umgestellt
- Ziel: 5 % Verbesserung in 3.15, 10 % Verbesserung in 3.16 sowie Unterstützung für free-threading
- Um den Bus-Faktor zu senken, wurden für jede Phase (Frontend, Middle-End, Backend) mindestens zwei Maintainer vorgesehen
- Komplexe Probleme wurden in kleinere Teile zerlegt, um neue Mitwirkende einzubinden
- Brandt Bucher teilte Arbeitseinheiten über „mega-issues“ auf
- 11 Mitwirkende wandelten Interpreter-Instruktionen so um, dass sie JIT-Optimierungen besser unterstützen
- Eine Kultur der Ermutigung zu Beiträgen und des Teilens von Erfolgen trug dazu bei, dass Beteiligte dauerhaft aktiv blieben
- Dadurch verbesserte sich die Leistung auf x86_64 Linux von 1 % auf 3–4 %
Wichtige technische Wendepunkte
Trace Recording
- Beim CPython Core Sprint erfolgte die Umstellung auf ein Tracing-basiertes Frontend
- Anfangs war es 6 % langsamer, doch mit der Einführung einer Dual-Dispatch-Struktur verbesserte sich die Leistung
- Dabei blieb die Größe des Interpreters weitgehend unter Kontrolle, während die Grundgeschwindigkeit des Interpreters erhalten blieb
- Durch die Einführung von Trace Recording stieg die JIT-Code-Abdeckung um 50 %, was spätere Optimierungen effizienter machte
Reference Count Elimination
- Der Ansatz entstand aus Matt Pages Arbeit an Bytecode-Optimierungen
- Durch das Entfernen von Branches, die beim Dekrementieren von Referenzzählern entstehen, wurde die Leistung verbessert
- Schon das Entfernen eines einzelnen Branches zeigte einen kumulativen Nutzen bei den Kosten
- Die Arbeit lässt sich gut parallelisieren und wurde als Lernaufgabe für neue Mitwirkende genutzt, um die JIT-Struktur kennenzulernen
Infrastruktur und Teamaufbau
- Savannah Ostrowski betreibt mit vier Maschinen eine Infrastruktur zur Messung der JIT-Leistung
- Tägliche JIT-Läufe ermöglichen die frühe Erkennung von Leistungsregressionen
- Diego Russo ist für den JIT auf ARM-Hardware und die Verbesserung der Profiler-Kompatibilität zuständig
- Brandt Bucher baute die Grundlage des Machine-Code-Backends auf und senkte damit die Einstiegshürde für neue Mitwirkende
Zusammenarbeit und Wissensaustausch
- Ratschläge von CF Bolz-Tereick zu PyPy verbesserten das Verständnis des JIT-Designs
- Der Austausch mit Compiler-Expert:innen wie Max Bernstein sorgte für anhaltende Motivation und technisches Wachstum
- Erfahrungen aus der Analyse des PyPy-Codes trugen zur Verbesserung der Qualität des CPython-JIT bei
Fazit
- Der JIT in Python 3.15 ist das Ergebnis aus Zusammenarbeit in der Community, technischen Experimenten und verbesserter Infrastruktur
- Menschen, Glück und eine Kultur der Zusammenarbeit erweisen sich als zentrale Triebkräfte für Leistungsinnovationen in Open Source
Noch keine Kommentare.