Pyston-lite, JIT-i kompilaator varu jaoks Python tutvustas

Pystoni projekti, mis pakub Pythoni keele suure jõudlusega teostust, mis kasutab kaasaegseid JIT-kompileerimistehnoloogiaid, arendajad on juurutanud Pyston-lite laienduse koos JIT-kompilaatori juurutamisega CPythonile. Kui Pyston on CPythoni koodibaasi haru ja seda arendatakse eraldi, siis Pyston-lite on loodud universaalse laiendusena, mis on loodud ühenduse loomiseks tavalise Pythoni tõlgiga (CPython).

Pyston-lite võimaldab kasutada Pystoni põhitehnoloogiaid ilma tõlki muutmata, installides PIP-i või Conda paketihalduri abil lisalaienduse. Pyston-lite on juba PyPI ja Conda hoidlates majutatud ning installimiseks käivitage lihtsalt käsk "pip install pyston_lite_autoload" või "conda install pyston_lite_autoload -c pyston". Soovitatav on kaks paketti: pyston_lite (otse JIT) ja pyston_lite_autoload (teeb Pythoni protsessi käivitamisel JIT-i automaatse asendamise). Funktsiooni pyston_lite.enable() abil on võimalik ka programmiliselt juhtida JIT-i lubamist rakenduse seest ilma automaatlaadimismoodulit installimata.

Kuigi Pyston-lite ei kata kõiki Pystonis saadaolevaid optimeerimisi, võimaldab selle kasutamine tavalise Python 10-ga võrreldes jõudlust umbes 25–3.8% parandada. Tulevikus plaanime enamiku Pystonis olemasolevatest optimeerimistest portida Pyston-lite'i, samuti laiendada toetatud CPythoni versioone (esimene väljalase toetab ainult Python 3.8). Globaalsematest plaanidest käib ühine töö CPythoni meeskonnaga JIT-i uute API-de juurutamisel, mis võimaldavad Pythoni töö üle täielikumat kontrolli. Arutatakse Pythoni 3.12 harus kavandatud muudatuste kaasamist. Ideaalis kaalutakse võimalust viia kõik funktsioonid Pystonilt laiendusse, mis võimaldab meil vabaneda omaenda CPythoni kahvli hooldamisest.

Lisaks Pyston-lite'ile andis projekt välja ka täieõigusliku Pyston 2.3.4 paketi värskenduse, mis sisaldab uusi optimeeringuid. Pyperformance testis on versioon 2.3.4 umbes 2.3.3% kiirem kui versioon 6. Üldine jõudluse kasv võrreldes CPythoniga on hinnanguliselt 66%.

Lisaks võime märkida põhiprojektis CPython 3.11 arendustsükli raames välja töötatud optimeerimisi, mis mõnes testis võimaldasid meil jõudlust 25% võrra suurendada. Näiteks CPython 3.11-s on parandatud baasmoodulite baitkoodi oleku vahemällu salvestamise efektiivsust, mis kiirendab skriptide käivitamist 10-15%. Funktsioonikutseid on oluliselt kiirendatud ja lisatud on tüüpiliste operatsioonide spetsiaalsed kiirtõlgid. Samuti on käimas töö Cinderi ja HotPy projektide koostatud optimeerimiste portimiseks.

Lisaks on nogil projekti raames käimas eksperimentaalne CPythoni ehitusrežiim ilma globaalse interpretaatori lukuta (GIL, Global Interpreter Lock), mis ei võimalda paralleelset juurdepääsu erinevate lõimede jagatud objektidele, mis takistab toimingute paralleelsust. mitmetuumalistes süsteemides. Teise lahendusena GIL-i probleemile arendatakse võimalust siduda eraldi GIL iga protsessi sees töötava tõlgiga (ühes protsessis võib töötada mitu interpretaatorit, kuid nende paralleelse täitmise efektiivsus sõltub GIL-ist).

Allikas: opennet.ru

Lisa kommentaar