Pyston-lite, wprowadzono kompilator JIT dla standardowego języka Python

Twórcy projektu Pyston, który oferuje wysokowydajną implementację języka Python z wykorzystaniem nowoczesnych technologii kompilacji JIT, zaprezentowali rozszerzenie Pyston-lite z implementacją kompilatora JIT dla CPython. Chociaż Pyston jest gałęzią bazy kodu CPython i jest rozwijany osobno, Pyston-lite został zaprojektowany jako uniwersalne rozszerzenie przeznaczone do łączenia się ze standardowym interpreterem Pythona (CPython).

Pyston-lite umożliwia korzystanie z podstawowych technologii Pyston bez zmiany interpretera, poprzez instalację dodatkowego rozszerzenia za pomocą menedżera pakietów PIP lub Conda. Pyston-lite jest już hostowany w repozytoriach PyPI i Conda i aby go zainstalować, wystarczy uruchomić polecenie „pip install pyston_lite_autoload” lub „conda install pyston_lite_autoload -c pyston”. Oferowane są dwa pakiety: pyston_lite (bezpośrednio JIT) i pyston_lite_autoload (wykonuje automatyczne podstawienie JIT po uruchomieniu procesu Pythona). Możliwe jest również programowe kontrolowanie włączenia JIT z aplikacji bez instalowania modułu autoload, za pomocą funkcji pyston_lite.enable().

Chociaż Pyston-lite nie obejmuje wszystkich optymalizacji dostępnych w Pyston, jego użycie może poprawić wydajność o około 10-25% w porównaniu ze zwykłym Pythonem 3.8. W przyszłości planowane jest przeniesienie większości optymalizacji obecnych w Pyston do Pyston-lite, a także rozbudowa obsługiwanych wersji CPythona (pierwsze wydanie obsługuje tylko Python 3.8). Bardziej globalne plany obejmują współpracę z zespołem CPython w celu wdrożenia nowych API dla JIT, pozwalających na pełniejszą kontrolę nad pracą Pythona. Dyskutowane jest włączenie proponowanych zmian do gałęzi Python 3.12. W idealnym przypadku rozważana jest możliwość przeniesienia całej funkcjonalności z Pyston do rozszerzenia, co pozwoli nam uniknąć utrzymywania własnego forka CPython.

Oprócz Pyston-lite projekt wydał także aktualizację pełnoprawnego pakietu Pyston 2.3.4, który oferuje nowe optymalizacje. W teście py Performance wersja 2.3.4 jest szybsza od wersji 2.3.3 o około 6%. Ogólny wzrost wydajności w porównaniu z CPythonem szacuje się na 66%.

Dodatkowo w głównym projekcie możemy zauważyć optymalizacje opracowane w ramach cyklu rozwojowego CPython 3.11, które w niektórych testach pozwoliły zwiększyć wydajność o 25%. Przykładowo w CPython 3.11 zwiększono efektywność buforowania stanu kodu bajtowego podstawowych modułów, co przyspieszy uruchamianie skryptów o 10-15%. Wywołania funkcji zostały znacznie przyspieszone oraz dodano wyspecjalizowane szybkie interpretery standardowych operacji. Trwają także prace nad przeniesieniem niektórych optymalizacji przygotowanych przez projekty Cinder i HotPy.

Dodatkowo w ramach projektu nogil trwają prace nad eksperymentalnym trybem budowy CPythona bez globalnej blokady interpretera (GIL, Global Interpreter Lock), który nie pozwala na równoległy dostęp do obiektów współdzielonych z różnych wątków, co uniemożliwia równoległość operacji na wielu -systemy podstawowe. Jako kolejne rozwiązanie problemu GIL, rozwijana jest możliwość powiązania osobnego GIL-a z każdym interpreterem działającym w procesie (w jednym procesie może działać kilka interpreterów, ale wydajność ich równoległego wykonywania zależy od GIL).

Źródło: opennet.ru

Dodaj komentarz