Pyston-lite, JIT fordító az állományhoz, a Python bevezetése

A Pyston-nyelv nagy teljesítményű, modern JIT-fordítási technológiákat használó megvalósítását kínáló Pyston projekt fejlesztői bevezették a Pyston-lite kiterjesztést a CPythonhoz készült JIT-fordító megvalósításával. Ha a Pyston a CPython kódbázis egyik ága, és külön fejlesztik, akkor a Pyston-lite univerzális bővítmény, amely a szokásos Python értelmezőhöz (CPython) való csatlakozásra szolgál.

A Pyston-lite lehetővé teszi az alapvető Pyston-technológiák használatát az értelmező megváltoztatása nélkül, egy további bővítmény telepítésével a PIP vagy a Conda csomagkezelő segítségével. A Pyston-lite már megtalálható a PyPI és Conda tárolókban, és a telepítéshez egyszerűen futtassa a „pip install pyston_lite_autoload” vagy a „conda install pyston_lite_autoload -c pyston” parancsot. Két csomag javasolt: a pyston_lite (közvetlenül a JIT) és a pyston_lite_autoload (automatikus JIT-helyettesítést hajt végre Python-folyamat indításakor). A pyston_lite.enable() függvény használatával programozottan is vezérelhető a JIT engedélyezése az alkalmazáson belülről, az automatikus betöltő modul telepítése nélkül.

Annak ellenére, hogy a Pyston-lite nem fedi le a Pystonban elérhető összes optimalizálást, használata körülbelül 10-25%-os teljesítménynövekedést tesz lehetővé a szokásos Python 3.8-hoz képest. A jövőben azt tervezzük, hogy a Pystonban jelenlévő optimalizációk többségét áthelyezzük Pyston-lite-ra, valamint bővítjük a CPython támogatott verzióit (az első kiadás csak a Python 3.8-at támogatja). A globálisabb tervek közül a CPython csapatával közös munka folyik a JIT új API-inak bevezetésén, amelyek teljesebb ellenőrzést tesznek lehetővé a Python munkája felett. A Python 3.12 ágba javasolt változtatások beépítésének megvitatása. Ideális esetben mérlegeljük annak lehetőségét, hogy az összes funkciót átvigyük a Pystonról egy bővítményre, ami lehetővé teszi számunkra, hogy megszabaduljunk a saját CPython villánk karbantartásától.

A projekt a Pyston-lite mellett a teljes értékű Pyston 2.3.4-es csomaghoz is kiadott egy frissítést, amely új optimalizálásokat tartalmaz. A pyperformance tesztben a 2.3.4-es verzió körülbelül 2.3.3%-kal gyorsabb, mint a 6-as. A teljes teljesítménynövekedés a CPythonhoz képest 66%-ra becsülhető.

Emellett megjegyezhetjük a fő projektben a CPython 3.11 fejlesztési ciklus keretében kifejlesztett optimalizációkat, amelyek egyes tesztekben 25%-kal növelték a teljesítményt. Például a CPython 3.11-ben javult az alapmodulok bájtkódjának állapotának gyorsítótárazásának hatékonysága, ami 10-15%-kal gyorsítja a szkriptek indítását. A függvényhívások jelentősen felgyorsultak, és a tipikus műveletek speciális gyors értelmezői kerültek hozzáadásra. A Cinder és a HotPy projektek által készített optimalizálások egy részének áthelyezése is folyamatban van.

Emellett a nogil projekt keretein belül folynak a munkálatok egy kísérleti CPython építési módon, globális értelmező zár nélkül (GIL, Global Interpreter Lock), amely nem teszi lehetővé a párhuzamos hozzáférést a különböző szálakból származó megosztott objektumokhoz, ami megakadályozza a műveletek párhuzamosítását. többmagos rendszereken. A GIL-lel kapcsolatos probléma másik megoldásaként fejlesztés alatt áll az a lehetőség, hogy a folyamaton belül futó minden egyes értelmezőhöz külön GIL-t lehessen kötni (egy folyamatban több interpretátor is futhat, de párhuzamos végrehajtásuk hatékonysága a GIL-en múlik).

Forrás: opennet.ru

Hozzászólás