Pyston-lite, wopanga JIT wa stock Python adayambitsidwa

Opanga pulojekiti ya Pyston, yomwe imapereka kukhazikitsidwa kwapamwamba kwa chilankhulo cha Python chomwe chimagwiritsa ntchito matekinoloje amakono a JIT, adayambitsa kufalikira kwa Pyston-lite ndikukhazikitsa JIT compiler ya CPython. Ngati Pyston ndi nthambi ya CPython codebase ndipo ikukula mosiyana, ndiye kuti Pyston-lite idapangidwa ngati chowonjezera chapadziko lonse lapansi chomwe chimapangidwa kuti chigwirizane ndi womasulira wa Python (CPython).

Pyston-lite imakupatsani mwayi wogwiritsa ntchito matekinoloje oyambira a Pyston osasintha womasulira, pokhazikitsa chowonjezera chowonjezera pogwiritsa ntchito PIP kapena Conda package manager. Pyston-lite yakhazikitsidwa kale m'malo osungira a PyPI ndi Conda, ndikuyika, ingoyendetsani lamulo "pip install pyston_lite_autoload" kapena "conda install pyston_lite_autoload -c pyston". Maphukusi awiri amaperekedwa: pyston_lite (JIT mwachindunji) ndi pyston_lite_autoload (imapanga m'malo mwa JIT poyambitsa ndondomeko ya Python). Ndikothekanso kuwongolera mwadongosolo kupangitsa JIT kuchokera mkati mwa pulogalamuyi popanda kukhazikitsa gawo la autoload, pogwiritsa ntchito pyston_lite.enable() ntchito.

Ngakhale Pyston-lite siyikuphimba zonse zomwe zilipo ku Pyston, kugwiritsa ntchito kumapangitsa kuti pakhale kusintha kwa 10-25% kuposa Python 3.8. M'tsogolomu, tikukonzekera kuyika zambiri zomwe zilipo ku Pyston kupita ku Pyston-lite, komanso kukulitsa mitundu yothandizidwa ya CPython (kutulutsa koyamba kumangogwirizira Python 3.8). Pazolinga zapadziko lonse lapansi, pali ntchito yogwirizana ndi gulu la CPython pakukhazikitsa ma API atsopano a JIT, omwe amalola kuwongolera kwathunthu ntchito ya Python. Kukambilana za kuphatikizidwa kwa zosintha zomwe zasinthidwa munthambi ya Python 3.12. Momwemo, kuthekera kwakusamutsa magwiridwe antchito onse kuchokera ku Pyston kupita ku chowonjezera kumaganiziridwa, zomwe zitilola kuti tichoke pakusunga foloko yathu ya CPython.

Kuphatikiza pa Pyston-lite, pulojekitiyi idatulutsanso zosintha pa phukusi lathunthu la Pyston 2.3.4, lomwe limaphatikizapo kukhathamiritsa kwatsopano. Mu mayeso a pyperformance, mtundu wa 2.3.4 ndiwofulumira kuposa kutulutsa 2.3.3 pafupifupi 6%. Kupindula konse kwa ntchito pa CPython akuyerekezeredwa ku 66%.

Kuphatikiza apo, titha kuzindikira kukhathamiritsa komwe kumapangidwa munjira yachitukuko cha CPython 3.11 mu projekiti yayikulu, yomwe m'mayesero ena idatilola kuwonjezera magwiridwe antchito ndi 25%. Mwachitsanzo, mu CPython 3.11, luso la caching state of the bytecode of base modules lakonzedwa bwino, lomwe lidzafulumizitsa kukhazikitsidwa kwa malemba ndi 10-15%. Kuyimba kwa ntchito kwachulukitsidwa kwambiri ndipo otanthauzira mwapadera omasulira magwiridwe antchito awonjezedwa. Ntchito ikuchitikanso kuti akwaniritse zina mwazokonzedwa ndi ma projekiti a Cinder ndi HotPy.

Kuphatikiza apo, mkati mwa projekiti ya nogil, ntchito ikuchitika pakupanga njira yoyesera ya CPython popanda loko yomasulira padziko lonse lapansi (GIL, Global Interpreter Lock), yomwe siyilola mwayi wofanana wa zinthu zomwe zimagawidwa kuchokera ku ulusi wosiyanasiyana, zomwe zimalepheretsa kufananiza kwa magwiridwe antchito. pa multi-core systems. Monga njira ina yothetsera vuto ndi GIL, kuthekera komanga GIL yosiyana kwa womasulira aliyense akuthamanga mkati mwa ndondomeko ikupangidwa (omasulira angapo akhoza kukhala akuyenda munjira imodzi, koma mphamvu ya kuphatikizika kwawo imachokera pa GIL).

Source: opennet.ru

Kuwonjezera ndemanga