S6, jẹ ile-ikawe olupilẹṣẹ JIT adaduro fun CPython
jinlẹ, mọ fun awọn idagbasoke rẹ ni aaye ti itetisi atọwọda, laipe kede pe ti ṣe ipinnu lati tu koodu orisun ti iṣẹ akanṣe S6 silẹ, eyiti o ni idagbasoke lati inu akopọ JIT fun ede Python.
Ise agbese jẹ awon nitori ti a ṣe bi ohun itẹsiwaju ìkàwé eyi ti o le wa ni ese pẹlu boṣewa CPython, eyi ti pese ibamu CPython ni kikun ati pe ko nilo iyipada ti koodu onitumọ. Ise agbese na ti wa ni idagbasoke lati ọdun 2019, ṣugbọn laanu ti ni iwọn pada ati pe ko si ni idagbasoke.
S6 jẹ iṣẹ akanṣe kan ti o bẹrẹ laarin DeepMind ni ọdun 2019 lati yara CPython pẹlu akopọ akoko-kan (“JIT”). Awọn iṣẹ wọnyi yoo pese bi ile-ikawe Python deede ati pe ko si awọn ayipada si onitumọ CPython yoo nilo. S6 pinnu lati ṣe fun Python ohun ti V8 ṣe fun Javascript (orukọ naa jẹ iyin si V8). Iṣẹ naa da lori ẹya CPython 3.7. Da lori iṣẹ ṣiṣe, a rii awọn iyara ti o to 9.5x ni awọn ipilẹ ti o wọpọ.
Idi pataki ti o fi pinnu lati tu koodu orisun silẹ, ọkan ninu wọn ati bi a ti sọ tẹlẹ ni pe ise agbese na duro ni atilẹyin, miiran ti awọn idi pataki ni a fun ni pe da lori awọn idagbasoke ti a ṣẹda, awọn wọnyi le tun wulo fun ilọsiwaju Python. .
A ti duro ṣiṣẹ lori S6 fipa. Bii iru bẹẹ, ibi ipamọ yii ti wa ni ipamọ ati pe a ko gba awọn ibeere fa tabi awọn ọran. A ṣii orisun ati pese akopọ apẹrẹ ni isalẹ lati mu awọn ibaraẹnisọrọ ṣiṣẹ laarin agbegbe Python ati ṣe iwuri iṣẹ iwaju lati mu Python dara si.
Nipa isẹ ti S6, a yẹ ki o darukọ pe S6 fun Python ṣe afiwe si ẹrọ V8 fun JavaScript ni awọn ofin ti awọn iṣẹ-ṣiṣe ti o yanju. Ile-ikawe naa rọpo awakọ onitumọ ceval.c bytecode ti o wa pẹlu imuse tirẹ ti o nlo akopọ JIT lati yara ipaniyan.
S6 sọwedowo ti o ba ti ti isiyi iṣẹ ti a ti kojọpọ ati pe, ti o ba jẹ bẹ, ṣiṣẹ koodu ti a ṣajọpọ, ati bi ko ba ṣe bẹ, ṣe iṣẹ naa ni ipo itumọ bytecode kan ti o jọra si onitumọ CPython. Itumọ naa ka nọmba awọn alaye ti a ṣe ati awọn ipe ti o ni nkan ṣe pẹlu iṣẹ ti n ṣiṣẹ.
Lẹhin ti o de ibi-iṣẹlẹ kan, ilana kikọ ti bẹrẹ lati yara koodu naa eyi ti nṣiṣẹ nigbagbogbo. Iṣakojọpọ ni a ṣe lori aṣoju agbedemeji strongjit, eyiti, lẹhin iṣapeye, ti yipada si awọn ilana ẹrọ eto ibi-afẹde nipa lilo ile-ikawe asmjit.
Ti o da lori iru ẹru naa, labẹ awọn ipo to dara julọ, S6 ṣe afihan ilosoke ninu iyara ipaniyan idanwo ti o to awọn akoko 9,5 ni akawe si CPython deede.
Nigbati 100 iterations ti wa ni ṣiṣe lati inu iyẹwu idanwo Richards, isare ti awọn akoko 7 wa, ati nigbati o ba n ṣiṣẹ idanwo Raytrace, eyiti o ni ọpọlọpọ awọn iṣiro, o yara ni awọn akoko 3 si 4,5.
Awọn iṣẹ-ṣiṣe ti o nira lati mu dara pẹlu S6 jẹ awọn iṣẹ akanṣe ti o lo C API, gẹgẹbi NumPy, bakanna bi awọn iṣẹ ṣiṣe ti o nii ṣe pẹlu iwulo lati ṣayẹwo awọn iru nọmba nla ti awọn iye.
Išẹ ti ko dara tun rii fun awọn ipe iṣẹ ẹyọkan eyiti o jẹ ọpọlọpọ awọn ohun elo nitori lilo imuse ti ko dara julọ ti onitumọ S6 Python (idagbasoke ko ti de ipele ti iṣapeye ipo itumọ).
Fun apẹẹrẹ, ninu Idanwo Ọkọọkan Unpack, eyiti o ṣi awọn akojọpọ nla ti awọn akopọ / tuples, ipe kan fihan idinku ti o to awọn akoko 5, ati pe ipe cyclic kan fun 0,97 lati CPython.
Níkẹyìn fun awọn ti o nifẹ lati mọ diẹ sii nipa rẹ, o yẹ ki o mọ pe koodu olupilẹṣẹ JIT ti kọ ni C ++ ati pe o da lori CPython 3.7 lọwọlọwọ, ni afikun si otitọ pe koodu orisun ti ṣii tẹlẹ labẹ iwe-aṣẹ Apache 2.0 ati pe o le ni imọran. lati ọna asopọ ni isalẹ.
Jẹ akọkọ lati sọ ọrọ