„Pyston 2“ - „Python“ diegimas su JIT kompiliatoriumi

Po trejų metų pertraukos paskelbta projekto „Pyston 2“ pradžia, ką aš sukūriauprie didelio našumo Python kalbos diegimo panaudojant LLVM projekto vystymąsi.

Įgyvendinimas išsiskiria šiuolaikinių JIT kompiliavimo technologijų naudojimu ir siekia aukšto našumo, panašaus į tradicines sistemos kalbas, tokias kaip C ++.

Ankstesnių versijų kodas pateikė Pystonas buvo platinamas pagal „Apache“ licenciją, bet „Pyston 2“ kodas dar nepasiekiamas ir išleidžiami tik paruošti naudoti versijos, skirtos „Ubuntu 18.04“ ir „20.04“ (failą su kodu galima atsisiųsti, bet yra tik šnipas su informacija, kad projektas vis dar uždarytas) .

Kodo paskelbimas yra kūrėjų planų dalisbet tai bus padaryta baigus verslo modelio sudarymą naujos įmonės ir buvo nuspręsta tęsti „Pyston“ plėtrą be finansinės „Dropbox“ paramos.

Apie „Pyston 2“

Skirtingai nuo ankstesnių versijų, „Pyston 2“ yra stabilus o ne kaip bandomąją versiją. Daug nuveikta siekiant optimizuoti našumą, o „Pyston 2“ dabar yra maždaug 3.8% ​​greitesnis nei originalus „Python 20“, kai praeina „python-macrobenchmarks“ bandymų rinkinį.

Labiausiai pastebimas našumas pastebimas būdinguose žiniatinklio programų darbo krūviuose. Atskiruose bandymuose, pvz., „Chaos.py“ ir „nbody.py“, „Pyston 2“ aplenkia „Python 3.8“ koeficientą 2. JIT naudojimo kaina yra nedidelis atminties sąnaudų padidėjimas.

Mums labai malonu išleisti „Pyston v2“ - greitesnį ir labai suderinamą „Python“ programavimo kalbos diegimą. 2 versija yra 20% greitesnė nei standartinis „Python 3.8“, esantis mūsų makrobizmuose. Dar svarbiau tai, kad greičiausiai jūsų kode tai yra greičiau. „Pyston v2“ gali sumažinti serverio išlaidas, sumažinti vartotojų delsą ir pagerinti kūrėjų produktyvumą.

„Pyston v2“ yra lengva įdiegti, todėl jei norite geresnio „Python“ našumo, rekomenduojame skirti penkias minutes ir pabandyti „Pyston“. Tai yra vienas iš paprasčiausių būdų paspartinti jūsų projektą.

Kalbant apie suderinamumą su gimtuoju „Python“ - „Pyston“ projektu yra įvardijamas kaip labiausiai suderinamas alternatyvus „CPython“ diegimas, nes „Pyston“ yra pagrindinės „CPython“ kodų bazės šakutė.

Pistonas palaiko visas „CPython“ funkcijas, įskaitant C API, skirtą plėtiniams C plėtoti. „Pyston“ iš pradžių sukūrė „Dropbox“, kuris 2017 m. nusprendė nutraukti vidinę plėtrą. 2020 m. Pradžioje geriausi „Pyston“ kūrėjai įkūrė savo įmonę, visiškai išradė projektą ir pradėjo dirbti „Pyston“ visą darbo dieną.

Techninė informacija apie „Pyston 2“ užpildymą dar nepateikta, minimi tik „DynASM JIT“, tiesioginis talpinimas ir bendros „CPython“ optimizacijos. Ankstesnėje „Pyston“ versijoje vienu metu buvo naudojamas vienas JIT metodas, panašus į JIT šiuolaikiniuose „JavaScript“ varikliuose.

JIT Python kodas buvo išanalizuotas ir išverstas į tarpinį atstovavimą LLVM (IR, tarpinis atstovavimas). Be to, IR atvaizdavimas buvo apdorotas LLVM optimizatoriuje ir perduotas vykdyti LLVM JIT varikliui, kuris pavertė IR vaizdą mašininiu kodu.

Norint gauti informacijos apie dinaminės Python kalbos programų kintamųjų tipus, buvo naudojama tikimybinio objektų tipų numatymo technika, o po to paaiškinta teisingo tipo pasirinkimas vykdymo metu.

Todėl Pystonas nuolat varijuodavo vykdymą tarp dviejų šakų: greitas, kai patvirtinamos numatomos normos, ir lėtas, kuris naudojamas tipų neatitikimo atveju.

Darbą galima atlikti kelių gijų režimu, leidžiantis lygiagrečiai vykdyti kelias kodo gijas Python kalba ir be visuotinio vertėjo užrakto (GIL).

Pagaliau jei norite apie tai sužinoti daugiau, išsamią informaciją galite patikrinti sekanti nuoroda.


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.