Guido van Rossum, der Schöpfer der Programmiersprache Python, sprach in seinem Vortrag auf dem Python Language Summit über die Pläne zur Optimierung der Leistung von CPython. Für die Version 3.11, die 2022 erwartet wird, hoffen die Entwickler auf eine Verdopplung der Leistung. An dem Optimierungsprojekt für CPython arbeitet ein kleines Team von Entwicklern bei Microsoft, zu dem kürzlich Guido übergewechselt ist.
Bei der Umsetzung des Projekts haben sich die Entwickler eine Reihe von Beschränkungen auferlegt, wie die vollständige Kompatibilität auf ABI- und Codeebene sowie die Vermeidung von Leistungssteigerungen, die auf Kosten der Leistung in Grenzfällen gehen. Zu den Elementen, die zur Leistungssteigerung verändert werden können, gehören Bytecode, die Platzierung von Daten im Speicher, der Compiler und der Interpreter.
Die Entwicklungen des Projekts werden in einem separaten Repository faster-cpython veröffentlicht. Einer der Projektmitglieder, der zuvor an der Entwicklung des JIT-Compilers HotPy für CPython gearbeitet hat, veröffentlichte einen Plan, gemäß dem er es für realistisch hält, die Leistung um das Fünffache zu steigern und dieses Ergebnis in der Veröffentlichung von Python 3.13 zu erzielen. Das Projekt ist in vier Phasen unterteilt:
- In Python 3.10 sind Optimierungen im Interpreter geplant, die den Interpretationsprozess an Typen und Werte zur Laufzeit anpassen.
- In der Veröffentlichung von Python 3.11 werden Verbesserungen in der Laufzeitumgebung und bei den Schlüsselkonstruktionen erwartet, sowie viele kleinere, spezialisierte Optimierungen, wie die Beschleunigung von binären Operatoren und die Handhabung von Ganzzahlen, die in ein Maschinenwort passen, die Beschleunigung von Funktionsaufrufen und -rückgaben, sowie die Reduzierung des Overheads beim Arbeiten mit Speicher und bei der Ausnahmebehandlung.
- In Python 3.12 wird ein einfacher JIT-Compiler eingeführt, der für einen kleinen Teil des spezialisierten Codes verwendet wird.
- In Python 3.13 werden neue Möglichkeiten zur Generierung von Maschinencode zur Laufzeit hinzugefügt und die Anwendung des JIT-Compilers wird erweitert.
Quelle: opennet.ru
