Predstavený Pyston-lite, JIT kompilátor pre akciový Python

Vývojári projektu Pyston, ktorý ponúka vysokovýkonnú implementáciu jazyka Python využívajúci moderné technológie kompilácie JIT, predstavili rozšírenie Pyston-lite s implementáciou JIT kompilátora pre CPython. Ak je Pyston pobočkou kódovej základne CPython a vyvíja sa samostatne, potom je Pyston-lite navrhnutý ako univerzálne rozšírenie určené na pripojenie k bežnému tlmočníkovi Pythonu (CPython).

Pyston-lite vám umožňuje používať základné technológie Pyston bez zmeny interpreta, a to inštaláciou dodatočného rozšírenia pomocou správcu balíkov PIP alebo Conda. Pyston-lite je už hosťovaný v repozitároch PyPI a Conda a na inštaláciu stačí spustiť príkaz „pip install pyston_lite_autoload“ alebo „conda install pyston_lite_autoload -c pyston“. Navrhujú sa dva balíčky: pyston_lite (priamo JIT) a pyston_lite_autoload (vykonáva automatickú náhradu JIT pri spustení procesu Python). Je tiež možné programovo ovládať povolenie JIT z aplikácie bez inštalácie modulu autoload pomocou funkcie pyston_lite.enable().

Hoci Pyston-lite nepokrýva všetky optimalizácie dostupné v Pystone, jeho používanie môže viesť k približne 10-25% zlepšeniu výkonu oproti bežnému Pythonu 3.8. V budúcnosti plánujeme preniesť väčšinu optimalizácií prítomných v Pystone na Pyston-lite, ako aj rozšíriť podporované verzie CPythonu (prvé vydanie podporuje iba Python 3.8). Z globálnejších plánov existuje spoločná práca s tímom CPython na implementácii nových API pre JIT, čo umožňuje úplnejšiu kontrolu nad prácou Pythonu. Diskusia o zahrnutí navrhovaných zmien do vetvy Python 3.12. V ideálnom prípade sa uvažuje s možnosťou prenosu všetkej funkcionality z Pystonu do rozšírenia, čo nám umožní vymaniť sa z údržby vlastného forku CPythonu.

Okrem Pyston-lite projekt vydal aj aktualizáciu plnohodnotného balíka Pyston 2.3.4, ktorý obsahuje nové optimalizácie. V teste pyperformance je verzia 2.3.4 rýchlejšia ako vydanie 2.3.3 o približne 6 %. Celkový nárast výkonu oproti CPythonu sa odhaduje na 66 %.

Okrem toho si môžeme všimnúť optimalizácie vyvinuté v rámci vývojového cyklu CPython 3.11 v hlavnom projekte, čo nám v niektorých testoch umožnilo zvýšiť výkon o 25%. Napríklad v CPythone 3.11 bola vylepšená efektivita cachovania stavu bajtkódu základných modulov, čo zrýchli spúšťanie skriptov o 10-15%. Volania funkcií sa výrazne zrýchlili a pridali sa špecializované rýchle tlmočníky typických operácií. Pracuje sa aj na portovaní niektorých optimalizácií, ktoré pripravili projekty Cinder a HotPy.

Okrem toho sa v rámci projektu nogil pracuje na experimentálnom režime zostavovania CPythonu bez globálneho zámku interpreta (GIL, Global Interpreter Lock), ktorý neumožňuje paralelný prístup k zdieľaným objektom z rôznych vlákien, čo zabraňuje paralelizácii operácií. na viacjadrových systémoch. Ako ďalšie riešenie problému s GIL sa vyvíja možnosť naviazať samostatný GIL na každý tlmočník spustený v rámci procesu (v jednom procese môže bežať viacero tlmočníkov, ale efektivita ich paralelného vykonávania spočíva na GIL).

Zdroj: opennet.ru

Pridať komentár