Pyston-lite, compilator JIT pentru stocul Python introdus

Dezvoltatorii proiectului Pyston, care oferă o implementare de înaltă performanță a limbajului Python care utilizează tehnologii moderne de compilare JIT, au introdus extensia Pyston-lite cu implementarea unui compilator JIT pentru CPython. Dacă Pyston este o ramură a bazei de cod CPython și se dezvoltă separat, atunci Pyston-lite este conceput ca o extensie universală concepută pentru a se conecta la interpretul obișnuit Python (CPython).

Pyston-lite vă permite să utilizați tehnologiile de bază Pyston fără a schimba interpretul, prin instalarea unei extensii suplimentare folosind managerul de pachete PIP sau Conda. Pyston-lite este deja găzduit în depozitele PyPI și Conda și, pentru a instala, trebuie doar să rulați comanda „pip install pyston_lite_autoload” sau „conda install pyston_lite_autoload -c pyston”. Sunt sugerate două pachete: pyston_lite (JIT direct) și pyston_lite_autoload (înlocuiește automat JIT la pornirea unui proces Python). De asemenea, este posibil să controlați programatic activarea JIT din cadrul aplicației fără a instala modulul de încărcare automată, folosind funcția pyston_lite.enable().

Chiar dacă Pyston-lite nu acoperă toate optimizările disponibile în Pyston, utilizarea acestuia permite îmbunătățiri de performanță cu aproximativ 10-25% față de Python 3.8 obișnuit. În viitor, intenționăm să portam majoritatea optimizărilor prezente în Pyston la Pyston-lite, precum și să extindem versiunile acceptate de CPython (prima versiune acceptă doar Python 3.8). Dintre planurile mai globale, există o muncă comună cu echipa CPython privind implementarea de noi API-uri pentru JIT, care permit un control mai complet asupra activității Python. Discutarea includerii modificărilor propuse în ramura Python 3.12. În mod ideal, este luată în considerare posibilitatea de a transfera toate funcționalitățile de la Pyston la o extensie, ceea ce ne va permite să scăpăm de la menținerea propriei furcături a CPython.

Pe lângă Pyston-lite, proiectul a lansat și o actualizare a pachetului complet Pyston 2.3.4, care include noi optimizări. În testul pyperformance, versiunea 2.3.4 este mai rapidă decât versiunea 2.3.3 cu aproximativ 6%. Câștigul general de performanță față de CPython este estimat la 66%.

În plus, putem remarca optimizările dezvoltate în cadrul ciclului de dezvoltare CPython 3.11 în proiectul principal, care în unele teste ne-au permis să creștem performanța cu 25%. De exemplu, în CPython 3.11, eficiența memorării în cache a stării bytecode a modulelor de bază a fost îmbunătățită, ceea ce va accelera lansarea scripturilor cu 10-15%. Apelurile de funcții au fost accelerate semnificativ și au fost adăugați interpreți rapidi specializați pentru operațiuni tipice. De asemenea, se lucrează la portarea unora dintre optimizările pregătite de proiectele Cinder și HotPy.

În plus, în cadrul proiectului nogil, se lucrează la un mod experimental de construire CPython fără o blocare globală a interpretului (GIL, Global Interpreter Lock), care nu permite accesul paralel la obiecte partajate din fire diferite, ceea ce împiedică paralelizarea operațiunilor. pe sisteme multi-core. Ca o altă soluție la problema cu GIL, este în curs de dezvoltare capacitatea de a lega un GIL separat la fiecare interpret care rulează într-un proces (mai mulți interpreți pot rula într-un singur proces, dar eficiența execuției lor paralele depinde de GIL).

Sursa: opennet.ru

Adauga un comentariu