„Pyston-lite“, JIT kompiliatorius, skirtas atsargoms „Python“.

„Pyston“ projekto, siūlančio didelio našumo „Python“ kalbos įgyvendinimą, naudojančią šiuolaikines JIT kompiliavimo technologijas, kūrėjai pristatė „Pyston-lite“ plėtinį, įdiegdami JIT kompiliatorių, skirtą „CPython“. Jei Pyston yra CPython kodų bazės atšaka ir kuriama atskirai, tai Pyston-lite sukurtas kaip universalus plėtinys, skirtas prisijungti prie įprasto Python interpretatoriaus (CPython).

Pyston-lite leidžia naudotis pagrindinėmis Pyston technologijomis nekeičiant interpretatoriaus, įdiegiant papildomą plėtinį naudojant PIP arba Conda paketų tvarkyklę. „Pyston-lite“ jau yra „PyPI“ ir „Conda“ saugyklose, o norėdami įdiegti, tiesiog paleiskite komandą „pip install pyston_lite_autoload“ arba „conda install pyston_lite_autoload -c pyston“. Siūlomi du paketai: pyston_lite (JIT tiesiogiai) ir pyston_lite_autoload (paleidžiant Python procesą atlieka automatinį JIT pakeitimą). Taip pat galima programiškai valdyti JIT įgalinimą programoje, neįdiegiant automatinio įkėlimo modulio, naudojant funkciją pyston_lite.enable().

Nors „Pyston-lite“ neapima visų „Pyston“ galimų optimizacijų, naudojant ją galima maždaug 10–25% pagerinti našumą, palyginti su įprastu „Python 3.8“. Ateityje planuojame daugumą Pyston optimizacijų perkelti į Pyston-lite, taip pat išplėsti palaikomas CPython versijas (pirmasis leidimas palaiko tik Python 3.8). Iš globalesnių planų yra bendras darbas su CPython komanda diegiant naujas JIT API, kurios leidžia pilniau kontroliuoti Python darbą. Siūlomų pakeitimų įtraukimo į Python 3.12 šaką aptarimas. Idealiu atveju svarstoma galimybė perkelti visas funkcijas iš Pyston į plėtinį, kuris leis mums atsikratyti savo CPython šakutės priežiūros.

Be Pyston-lite, projektas taip pat išleido visaverčio Pyston 2.3.4 paketo atnaujinimą, kuriame yra naujų optimizacijų. Atliekant pyperformance testą, 2.3.4 versija yra maždaug 2.3.3% greitesnė nei 6 versija. Apskaičiuota, kad bendras našumo padidėjimas, palyginti su CPython, yra 66%.

Be to, galime atkreipti dėmesį į pagrindinio projekto CPython 3.11 kūrimo ciklo pagrindu sukurtus optimizavimus, kurie kai kuriuose bandymuose leido mums padidinti našumą 25%. Pavyzdžiui, CPython 3.11 versijoje pagerintas bazinių modulių baitinio kodo būsenos talpyklos saugojimo efektyvumas, o tai paspartins scenarijų paleidimą 10-15%. Funkcijų iškvietimai buvo žymiai pagreitinti ir pridėti specializuoti greiti tipinių operacijų vertėjai. Taip pat vyksta kai kurių Cinder ir HotPy projektų parengtų optimizacijų perkėlimas.

Be to, pagal nogil projektą vyksta eksperimentinis CPython kūrimo režimas be globalaus interpretatoriaus užrakto (GIL, Global Interpreter Lock), kuris neleidžia lygiagrečiai pasiekti bendrinamus objektus iš skirtingų gijų, o tai neleidžia lygiagrečiai atlikti operacijų. kelių branduolių sistemose. Kaip dar vienas GIL problemos sprendimas, kuriama galimybė susieti atskirą GIL prie kiekvieno proceso viduje veikiančio vertėjo (viename procese gali veikti keli vertėjai, tačiau lygiagretaus jų vykdymo efektyvumas priklauso nuo GIL).

Šaltinis: opennet.ru

Добавить комментарий