Introduserte Pyston-lite, en JIT-kompilator for native Python

Utviklerne av Pyston-prosjektet, som tilbyr en høyytelsesimplementering av Python-språket ved bruk av moderne JIT-kompileringsteknologier, presenterte Pyston-lite-utvidelsen med en implementering av JIT-kompilatoren for CPython. Mens Pyston er en gren av CPython-kodebasen og er utviklet separat, er Pyston-lite designet som en universell utvidelse designet for å koble til standard Python-tolk (CPython).

Pyston-lite lar deg bruke de grunnleggende Pyston-teknologiene uten å bytte tolk, ved å installere en ekstra utvidelse ved å bruke PIP- eller Conda-pakkebehandlingen. Pyston-lite er allerede vert i PyPI- og Conda-lagrene, og for å installere, kjør bare kommandoen "pip install pyston_lite_autoload" eller "conda install pyston_lite_autoload -c pyston". To pakker er foreslått: pyston_lite (JIT direkte) og pyston_lite_autoload (utfører automatisk JIT-erstatning når du starter en Python-prosess). Det er også mulig å programmere styre aktivering av JIT fra applikasjonen uten å installere autoload-modulen, ved å bruke funksjonen pyston_lite.enable().

Selv om Pyston-lite ikke dekker alle optimaliseringene som er tilgjengelige i Pyston, kan bruken forbedre ytelsen med omtrent 10-25 % sammenlignet med vanlig Python 3.8. I fremtiden er det planlagt å overføre de fleste optimaliseringene som finnes i Pyston til Pyston-lite, samt utvide de støttede versjonene av CPython (den første utgivelsen støtter kun Python 3.8). Flere globale planer inkluderer samarbeid med CPython-teamet for å implementere nye APIer for JIT, noe som gir mer fullstendig kontroll over arbeidet til Python. Inkluderingen av de foreslåtte endringene i Python 3.12-grenen diskuteres. Ideelt sett vurderes muligheten for å flytte all funksjonalitet fra Pyston inn i utvidelsen, noe som vil tillate oss å unngå å opprettholde vår egen CPython-gaffel.

I tillegg til Pyston-lite har prosjektet også gitt ut en oppdatering til den fullverdige Pyston 2.3.4-pakken, som tilbyr nye optimaliseringer. I pyperformance-testen er versjon 2.3.4 raskere enn versjon 2.3.3 med omtrent 6 %. Den totale ytelsesgevinsten sammenlignet med CPython er estimert til 66 %.

I tillegg kan vi merke oss optimaliseringene utviklet innenfor CPython 3.11-utviklingssyklusen i hovedprosjektet, som i noen tester gjorde det mulig å øke ytelsen med 25 %. For eksempel, i CPython 3.11, er effektiviteten av caching av bytekodetilstanden til grunnleggende moduler økt, noe som vil fremskynde lanseringen av skript med 10-15%. Funksjonsanrop har blitt betydelig fremskyndet og spesialiserte hurtigtolkere av standardoperasjoner er lagt til. Det pågår også arbeid med å portere noen optimaliseringer utarbeidet av Cinder- og HotPy-prosjektene.

I tillegg, innenfor nogil-prosjektet, arbeides det med en eksperimentell modus for å bygge CPython uten en global tolkelås (GIL, Global Interpreter Lock), som ikke tillater parallell tilgang til delte objekter fra forskjellige tråder, noe som forhindrer parallellisering av operasjoner på multi -kjernesystemer. Som en annen løsning på GIL-problemet utvikles muligheten til å binde en separat GIL til hver tolk som kjører i en prosess (flere tolker kan kjøre i én prosess, men effektiviteten av deres parallelle utførelse avhenger av GIL).

Kilde: opennet.ru

Legg til en kommentar