Pyston-lite, JIT-kääntäjä varastossa Python esitelty

Pyston-projektin, joka tarjoaa tehokkaan Python-kielen toteutuksen, joka käyttää nykyaikaisia ​​JIT-kääntämistekniikoita, kehittäjät ovat ottaneet käyttöön Pyston-lite-laajennuksen, jossa on toteutettu JIT-kääntäjä CPythonille. Jos Pyston on CPython-koodikannan haara ja kehittyy erikseen, Pyston-lite on suunniteltu yleislaajennukseksi, joka on suunniteltu yhdistämään tavalliseen Python-tulkkiin (CPython).

Pyston-lite antaa sinun käyttää Pystonin perustekniikoita tulkkia vaihtamatta asentamalla lisälaajennus PIP- tai Conda-pakettienhallinnan avulla. Pyston-lite on jo isännöity PyPI- ja Conda-arkistoissa, ja asentaaksesi sinun tarvitsee vain suorittaa komento "pip install pyston_lite_autoload" tai "conda install pyston_lite_autoload -c pyston". Kahta pakettia ehdotetaan: pyston_lite (JIT suoraan) ja pyston_lite_autoload (tekee automaattisen JIT-korvauksen Python-prosessia käynnistettäessä). On myös mahdollista ohjata JIT:n käyttöönottoa ohjelmallisesti sovelluksen sisällä ilman automaattisen latausmoduulin asentamista pyston_lite.enable()-funktion avulla.

Vaikka Pyston-lite ei kata kaikkia Pystonissa saatavilla olevia optimointeja, sen käyttö mahdollistaa noin 10-25 % suorituskyvyn parannuksia tavalliseen Python 3.8:aan verrattuna. Tulevaisuudessa aiomme siirtää suurimman osan Pystonissa olevista optimoinneista Pyston-liteen sekä laajentaa tuettuja CPython-versioita (ensimmäinen julkaisu tukee vain Python 3.8:aa). Globaalimmista suunnitelmista on yhteistä työtä CPython-tiimin kanssa uusien JIT-sovellusliittymien käyttöönotossa, mikä mahdollistaa täydellisemmän Pythonin työn hallinnan. Keskustelemme ehdotettujen muutosten sisällyttämisestä Python 3.12 -haaraan. Ihannetapauksessa harkitaan mahdollisuutta siirtää kaikki toiminnot Pystonista laajennukseen, mikä antaa meille mahdollisuuden päästä eroon oman CPython-haarukan ylläpidosta.

Pyston-liten lisäksi projekti julkaisi päivityksen myös täysimittaiseen Pyston 2.3.4 -pakettiin, joka sisältää uusia optimointeja. Pyperformance-testissä versio 2.3.4 on nopeampi kuin versio 2.3.3 noin 6 %. Kokonaissuorituskyvyn kasvu CPythoniin verrattuna on arviolta 66 %.

Lisäksi voidaan huomioida pääprojektissa CPython 3.11 -kehityssyklin puitteissa kehitetyt optimoinnit, joiden ansiosta pystyimme joissakin testeissä parantamaan suorituskykyä 25 %. Esimerkiksi CPython 3.11:ssä perusmoduulien tavukoodin tilan välimuistin tehokkuutta on parannettu, mikä nopeuttaa komentosarjojen käynnistämistä 10-15%. Toimintokutsuja on nopeutettu merkittävästi ja tyypillisiin operaatioihin on lisätty erikoistuneita pikatulkkeja. Myös Cinder- ja HotPy-projektien valmistelemien optimointien siirtäminen on käynnissä.

Lisäksi nogil-projektin puitteissa työstetään kokeellista CPython-rakennustilaa ilman globaalia tulkkilukkoa (GIL, Global Interpreter Lock), joka ei salli rinnakkaista pääsyä eri säikeistä jaettuihin objekteihin, mikä estää toimintojen rinnakkaisumisen. moniytimisissä järjestelmissä. Toisena ratkaisuna GIL-ongelmaan kehitetään kykyä sitoa erillinen GIL jokaiseen prosessin sisällä olevaan tulkkiin (yhdessä prosessissa voi olla useita tulkkeja, mutta niiden rinnakkaissuorituksen tehokkuus riippuu GIL:stä).

Lähde: opennet.ru

Lisää kommentti