Python: Guido van Rossum arbeitet an Performance der Sprache
In einem Podcast(öffnet im neuen Fenster) von Software at Scale(öffnet im neuen Fenster) spricht Guido van Rossum über seine Arbeit bei Microsoft, wieso er sich dort für ein Performance-Projekt für die Programmiersprache entschieden hat und wo er die größten Optimierungspotenziale sieht.
Das Projekt, an dem van Rossum bei Microsoft arbeitet, ist nicht das erste, das versucht, Python zu mehr Performance zu verhelfen. In dem Podcast direkt angesprochen werden Pypy(öffnet im neuen Fenster) und Pyston(öffnet im neuen Fenster) .
Kompatibilität wurde nie wirklich gelöst.
Bei beiden Projekten sieht van Rossum die größte Schwierigkeit in Kompatibilitäten von bestehenden Programmen und den Extension-Modulen. Gerade davon, wie Pypy gelaufen ist, scheint van Rossum enttäuscht zu sein. "Es hat sich immer so angehört, als sei Pypy eine Art magische Lösung, von der nur wenige Menschen auf der Welt verstehen, wie sie funktioniert. Und diese Leute haben das gebaut und sich dann entschieden, andere Dinge zu tun" , kritisiert van Rossum die ursprünglichen Entwickler. Man habe es einfach anderen überlassen, "die eigentlichen Probleme mit Pypy zu lösen" , Probleme, die im Bereich Kompatibilität mit den Erweiterungsmodulen liegen. "Und die haben sie nie wirklich gelöst" , sagt van Rossum.
Die Pyston-Leute hätten zwar von den Fehlern bei Pypy gelernt und eine CPython-basierte Lösung angestrebt, um so Extension-Modules-Kompatibilität zu garantieren. Die Garbage-Collection-Verbesserungen lobt van Rossum, anderes wiederum war für ihn kontraproduktiv. "Ich glaube, sie haben die Referenzzählung abgeschafft. Aus diesem Grund wurde das Verhalten vieler realer Python-Programme vollständig geändert." Letztlich war es also wieder fehlende Kompatibilität.
Facebooks CI Python ( Cinder(öffnet im neuen Fenster) ) wurde für van Rossum "tot geboren, oder zumindest wurde es der Welt in seiner toten Form offenbart" . Auch hier ist der Grund eine Änderung der Objekt-Layouts, die wie im Fall der abgeschafften Referenzzählungen zu Inkompatibilitäten führt.
Stattdessen: Bytecodeoptimierungen
Gearbeitet wird bei Microsoft an einem Ansatz, der von Mark Shannon stammt – auch er ist Teil des Projektteams, in dem van Rossum mitwirkt. Mit Bytecode-Interpreter-Optimierungen soll bei voller Kompatibilität schon in CPython 3.11 in 2022 eine Performanceverdopplung drin sein. In ein paar Jahren, van Rossum spricht von vier Jahren, soll eine fünffache Geschwindigkeit in Aussicht stehen. Um das zu erreichen, soll Tiered Execution(öffnet im neuen Fenster) Verwendung finden, bei dem Code bei mehreren Durchläufen immer wärmer(öffnet im neuen Fenster) wird und dabei immer weitere Optimierungen in der Ausführung erhält. Als Optimierungen sind Typanpassungen im Interpreter, schnellere Calls und Returns, Geschwindigkeitsverbesserungen bei Binäroperationen, ein Zero-Overhead-Konzept für Exception-Handling, ein JIT-Compiler und einiges mehr geplant.
- Anzeige Hier geht es zu Python 3: Das umfassende Handbuch bei Amazon Wenn Sie auf diesen Link klicken und darüber einkaufen, erhält Golem eine kleine Provision. Dies ändert nichts am Preis der Artikel.