Ieviests Pyston-lite, JIT kompilators vietējam Python

Pyston projekta izstrādātāji, kas piedāvā augstas veiktspējas Python valodas ieviešanu, izmantojot modernas JIT kompilācijas tehnoloģijas, prezentēja Pyston-lite paplašinājumu ar JIT kompilatora ieviešanu CPython. Lai gan Pyston ir CPython koda bāzes atzars un tiek izstrādāts atsevišķi, Pyston-lite ir paredzēts kā universāls paplašinājums, kas paredzēts savienojumam ar standarta Python tulku (CPython).

Pyston-lite ļauj izmantot Pyston pamattehnoloģijas, nemainot tulku, instalējot papildu paplašinājumu, izmantojot PIP vai Conda pakotņu pārvaldnieku. Pyston-lite jau ir mitināts PyPI un Conda krātuvēs, un, lai to instalētu, vienkārši palaidiet komandu “pip install pyston_lite_autoload” vai “conda install pyston_lite_autoload -c pyston”. Tiek piedāvātas divas pakotnes: pyston_lite (tieši JIT) un pyston_lite_autoload (veic automātisku JIT aizstāšanu, kad sākas Python process). Ir iespējams arī programmatiski kontrolēt JIT iekļaušanu no lietojumprogrammas, neinstalējot automātiskās ielādes moduli, izmantojot funkciju pyston_lite.enable().

Lai gan Pyston-lite neaptver visas Pyston pieejamās optimizācijas, tā izmantošana var uzlabot veiktspēju par aptuveni 10–25%, salīdzinot ar parasto Python 3.8. Nākotnē ir plānots lielāko daļu Pyston esošo optimizāciju pārnest uz Pyston-lite, kā arī paplašināt atbalstītās CPython versijas (pirmā versija atbalsta tikai Python 3.8). Globālāki plāni ietver sadarbību ar CPython komandu, lai ieviestu jaunas API JIT, ļaujot pilnīgāk kontrolēt Python darbu. Tiek apspriesta piedāvāto izmaiņu iekļaušana Python 3.12 filiālē. Ideālā gadījumā tiek apsvērta iespēja pārvietot visu funkcionalitāti no Pyston uz paplašinājumu, kas ļaus mums izvairīties no savas CPython fork uzturēšanas.

Papildus Pyston-lite projekts izlaida arī pilnvērtīgas Pyston 2.3.4 pakotnes atjauninājumu, kas piedāvā jaunas optimizācijas. Pyperformance testā versija 2.3.4 ir par aptuveni 2.3.3% ātrāka nekā 6. Tiek lēsts, ka kopējais veiktspējas pieaugums salīdzinājumā ar CPython ir 66%.

Papildus var atzīmēt CPython 3.11 izstrādes cikla ietvaros izstrādātās optimizācijas galvenajā projektā, kas dažos testos ļāva palielināt veiktspēju par 25%. Piemēram, CPython 3.11 ir palielināta pamata moduļu baitkoda stāvokļa kešatmiņas saglabāšanas efektivitāte, kas paātrinās skriptu palaišanu par 10-15%. Funkciju izsaukumi ir ievērojami paātrināti un ir pievienoti specializēti ātrie standarta operāciju tulki. Notiek darbs arī pie dažu Cinder un HotPy projektu sagatavoto optimizāciju portēšanas.

Turklāt nogil projekta ietvaros tiek strādāts pie eksperimentāla režīma CPython izveidei bez globālā tulka bloķēšanas (GIL, Global Interpreter Lock), kas neļauj paralēli piekļūt koplietotiem objektiem no dažādiem pavedieniem, kas novērš darbību paralēlizēšanu multi. - pamatsistēmas. Kā vēl viens GIL problēmas risinājums tiek izstrādāta iespēja saistīt atsevišķu GIL katram tulkam, kas darbojas procesa ietvaros (vienā procesā var darboties vairāki tulki, bet to paralēlās izpildes efektivitāte ir atkarīga no GIL).

Avots: opennet.ru

Pievieno komentāru