Brandt Bucher wa Microsoft, yemwe ndi woyambitsa CPython wamkulu ndipo amagwira ntchito pagulu lomwe limayang'ana kwambiri kuwongolera magwiridwe antchito a womasulira wa CPython, wasindikiza kukhazikitsidwa kwa JIT compiler ya Python pogwiritsa ntchito njira ya Copy-and-Patch. Kusindikizidwa kwa JIT kwayikidwa nthawi kuti igwirizane ndi Khrisimasi ndipo chilengezocho chalembedwa mu vesi.
JIT yomwe ikufunsidwa ndiyodziwikiratu chifukwa cha liwiro lake lapamwamba kwambiri la kupanga ma code, kuwongolera bwino komanso kuphatikiza kwathunthu ndi womasulira. Njira yomwe yaperekedwa imakupatsani mwayi womasulira womasulira wolembedwa m'chilankhulo cha C kukhala chophatikiza cha JIT, osapanga padera malingaliro opanga ma code komanso popanda kupanga zoyimira pagulu. Ndi njira iyi, kukonza cholakwika mwa womasulira kumangotsogolera kukonza vuto lomwelo mu JIT, popeza jenereta wamba imagwiritsidwa ntchito.
Njira ya Copy-and-Patch imachokera ku mfundo yakuti kusamutsa kachidindo mu kukumbukira pamene mukukweza mafayilo a chinthu ndi cholumikizira ndikulowetsamo malangizo a makina m'malo mwa bytecode mu JIT ndi ntchito zofanana. Pamene JIT ikugwira ntchito, panthawi yokonzekera pulogalamu, malangizo a bytecode omwe amapangidwa ndi womasulira amawerengedwa ndipo makina opangidwa kale amakopera malangizo aliwonse kumalo okumbukira ndi code executable, komanso malangizo amasinthidwa pa ntchentche kuti alowe m'malo mwa deta yosinthidwa. iwo (JIT imakopera ma tempulo opangidwa okonzeka a ntchito zomwe zapangidwa kale ndikulowetsamo zofunikira, monga mikangano ndi zokhazikika). Kutsegula mafayilo azinthu kumakoperanso makina amakina mu kukumbukira ndikulowetsa zizindikiro zakunja.
Mu Copy-and-Patch JIT, fayilo ya chinthu mumtundu wa ELF imasonkhanitsidwa pogwiritsa ntchito LLVM, yomwe ili ndi chidziwitso chokhudza malangizo a bytecode ndi chidziwitso chokhudza kusintha kofunikira kwa deta. JIT imalowa m'malo mwa malangizo a bytecode omwe amapangidwa panthawi yotanthauzira pulogalamu ndikuyimira makina amakina, nthawi imodzi ndikulowetsa zofunikira pakuwerengera. Kukhazikitsa kwa JIT kumafuna LLVM ngati kudalira pa nthawi yomanga, koma zigawo za nthawi yothamanga sizimangiriridwa ndi zodalira zakunja ndipo zimaphika mpaka pafupifupi 300 mizere yolembedwa pamanja ya C ndi 3000 yopangidwa ndi C code.
Poyerekeza ndi zida zachikhalidwe za JIT (LLVM -O0), JIT yomwe ikufunsidwa imapereka ma code 100 mwachangu ndikutulutsa 15% mwachangu. Poyerekeza ndi kulemba kwa WebAssembly (Liftoff), JIT yatsopano imapanga kachidindo ka 5 mofulumira, ndipo zotsatira zake zimathamanga 50% mofulumira. Tikayerekeza JIT yatsopano ndi JIT yokhathamiritsa (LuaJIT), yomwe imagwiritsa ntchito ma code a msonkhano olembedwa pamanja, mtundu womwe waperekedwawo udali wothamanga mu 13 mwa mayeso 44, ndipo pafupifupi adatsalira m'mbuyo pakuchita ndi 35%, pomwe amathandizira kukonza ndikuchepetsa. mlingo wa kukhazikitsa zovuta.

Source: opennet.ru
