Pyston-lite, JIT-kompilator för lager Python introducerad

Utvecklarna av Pyston-projektet, som erbjuder en högpresterande implementering av Python-språket med hjälp av moderna JIT-kompileringstekniker, presenterade Pyston-lite-förlängningen med en implementering av JIT-kompilatorn för CPython. Medan Pyston är en gren av CPython-kodbasen och utvecklas separat, är Pyston-lite designad som en universell tillägg designad för att ansluta till den vanliga Python-tolken (CPython).

Pyston-lite låter dig använda de grundläggande Pyston-teknikerna utan att byta tolk, genom att installera en extra tillägg med PIP- eller Conda-pakethanteraren. Pyston-lite är redan värd i PyPI- och Conda-förråden och för att installera det, kör bara kommandot "pip install pyston_lite_autoload" eller "conda install pyston_lite_autoload -c pyston". Två paket erbjuds: pyston_lite (direkt JIT) och pyston_lite_autoload (utför automatisk JIT-substitution när Python-processen startar). Det är också möjligt att programmässigt styra inkluderingen av JIT från applikationen utan att installera autoload-modulen, med hjälp av funktionen pyston_lite.enable().

Även om Pyston-lite inte täcker alla optimeringar som finns tillgängliga i Pyston, kan dess användning förbättra prestandan med cirka 10-25% jämfört med vanliga Python 3.8. I framtiden är det planerat att överföra de flesta av de optimeringar som finns i Pyston till Pyston-lite, samt utöka de stödda versionerna av CPython (den första utgåvan stöder bara Python 3.8). Fler globala planer inkluderar samarbete med CPython-teamet för att implementera nya API:er för JIT, vilket ger mer fullständig kontroll över Pythons arbete. Införandet av de föreslagna ändringarna i Python 3.12-grenen diskuteras. Helst övervägs möjligheten att flytta all funktionalitet från Pyston till förlängningen, vilket gör att vi slipper behålla vår egen CPython-gaffel.

Förutom Pyston-lite släppte projektet även en uppdatering till det fullfjädrade Pyston 2.3.4-paketet, som erbjuder nya optimeringar. I pyperformance-testet är version 2.3.4 snabbare än version 2.3.3 med cirka 6 %. Den totala prestationsvinsten jämfört med CPython uppskattas till 66 %.

Dessutom kan vi notera de optimeringar som utvecklats inom utvecklingscykeln CPython 3.11 i huvudprojektet, som i vissa tester gjorde det möjligt att öka prestandan med 25 %. Till exempel, i CPython 3.11, har effektiviteten för att cachelagra bytekodtillståndet för basmoduler ökats, vilket kommer att påskynda lanseringen av skript med 10-15%. Funktionsanrop har accelererats avsevärt och specialiserade snabbtolkar av standardoperationer har tillkommit. Arbete pågår också för att porta några optimeringar som utarbetats av Cinder- och HotPy-projekten.

Dessutom, inom nogil-projektet, pågår arbetet med ett experimentellt läge för att bygga CPython utan ett globalt tolklås (GIL, Global Interpreter Lock), vilket inte tillåter parallell åtkomst till delade objekt från olika trådar, vilket förhindrar parallellisering av operationer på multi -kärnsystem. Som en annan lösning på GIL-problemet utvecklas möjligheten att binda en separat GIL till varje tolk som körs inom en process (flera tolkar kan köras i en process, men effektiviteten i deras parallella exekvering beror på GIL).

Källa: opennet.ru

Lägg en kommentar