Pyston-lite, JIT compiler til lager Python introduceret

Udviklerne af Pyston-projektet, som tilbyder en højtydende implementering af Python-sproget ved hjælp af moderne JIT-kompileringsteknologier, præsenterede Pyston-lite-udvidelsen med en implementering af JIT-kompileren til CPython. Mens Pyston er en gren af ​​CPython-kodebasen og udvikles separat, er Pyston-lite designet som en universel udvidelse designet til at oprette forbindelse til standard Python-fortolker (CPython).

Pyston-lite giver dig mulighed for at bruge de grundlæggende Pyston-teknologier uden at ændre tolken ved at installere en ekstra udvidelse ved hjælp af PIP- eller Conda-pakkehåndteringen. Pyston-lite er allerede hostet i PyPI- og Conda-lagrene, og for at installere det skal du bare køre kommandoen "pip install pyston_lite_autoload" eller "conda install pyston_lite_autoload -c pyston". To pakker tilbydes: pyston_lite (direkte JIT) og pyston_lite_autoload (udfører automatisk JIT-substitution, når Python-processen starter). Det er også muligt programmæssigt at styre inkluderingen af ​​JIT fra applikationen uden at installere autoload-modulet ved at bruge funktionen pyston_lite.enable().

Selvom Pyston-lite ikke dækker alle de optimeringer, der er tilgængelige i Pyston, kan brugen forbedre ydeevnen med cirka 10-25% sammenlignet med almindelig Python 3.8. I fremtiden er det planlagt at overføre de fleste af de optimeringer, der findes i Pyston, til Pyston-lite, samt at udvide de understøttede versioner af CPython (den første udgivelse understøtter kun Python 3.8). Flere globale planer inkluderer samarbejde med CPython-teamet for at implementere nye API'er til JIT, hvilket giver mere fuldstændig kontrol over Pythons arbejde. Inkluderingen af ​​de foreslåede ændringer i Python 3.12-grenen diskuteres. Ideelt set overvejes muligheden for at flytte al funktionaliteten fra Pyston til udvidelsen, hvilket vil tillade os at undgå at vedligeholde vores egen CPython-gaffel.

Udover Pyston-lite udgav projektet også en opdatering til den fuldgyldige Pyston 2.3.4-pakke, som byder på nye optimeringer. I pyperformance-testen er version 2.3.4 hurtigere end version 2.3.3 med omkring 6 %. Den samlede præstationsgevinst sammenlignet med CPython er estimeret til 66%.

Derudover kan vi bemærke de optimeringer, der er udviklet inden for CPython 3.11 udviklingscyklussen i hovedprojektet, som i nogle test gjorde det muligt at øge ydeevnen med 25%. For eksempel, i CPython 3.11 er effektiviteten af ​​caching af bytekodetilstanden for basismoduler blevet øget, hvilket vil fremskynde lanceringen af ​​scripts med 10-15%. Funktionsopkald er blevet betydeligt fremskyndet, og specialiserede hurtige tolke af standardoperationer er blevet tilføjet. Der arbejdes også på at portere nogle optimeringer udarbejdet af Cinder- og HotPy-projekterne.

Derudover arbejdes der inden for nogil-projektet på en eksperimentel tilstand til at bygge CPython uden en global fortolkerlås (GIL, Global Interpreter Lock), som ikke tillader parallel adgang til delte objekter fra forskellige tråde, hvilket forhindrer parallelisering af operationer på multi -kernesystemer. Som en anden løsning på GIL-problemet udvikles muligheden for at binde en separat GIL til hver tolk, der kører i en proces (flere tolke kan køre i én proces, men effektiviteten af ​​deres parallelle udførelse afhænger af GIL).

Kilde: opennet.ru

Tilføj en kommentar