Cloudflare, Mozilla da Facebook suna haɓaka BinaryAST don haɓaka loda JavaScript

Injiniyoyin Cloudflare, Mozilla, Facebook da Bloomberg miƙa sabon tsari binaryAST don hanzarta isarwa da sarrafa lambar JavaScript lokacin buɗe shafuka a cikin mai lilo. BinaryAST yana matsar da lokacin tantancewa zuwa gefen uwar garken kuma yana ba da bishiyar syntax da aka riga aka samar (AST). Bayan karɓar BinaryAST, mai binciken zai iya ci gaba nan da nan zuwa matakin tattarawa, yana ƙetare ƙaddamar da lambar tushen JavaScript.

Don gwaji shirya aiwatar da tunani da aka kawo ƙarƙashin lasisin MIT. Ana amfani da abubuwan haɗin Node.js don tantancewa, kuma an rubuta lambar don ingantawa da tsarar AST a cikin Rust. Goyon bayan Browser
BinaryAST ya riga ya kasance a ciki dare yana gini Firefox. Za'a iya amfani da mai rikodin a cikin BinaryAST duka a ƙarshen matakin kayan aiki na rukunin yanar gizo da kuma rubutun marufi na rukunin yanar gizon waje a gefen hanyar wakili ko hanyar sadarwar abun ciki. A halin yanzu, tsarin daidaitawa na BinaryAST ta ƙungiyar aiki ya riga ya fara Saukewa: ECMA TC39, Bayan haka tsarin zai iya kasancewa tare da hanyoyin damtse abun ciki da ake da su, kamar gzip da brotli.

Cloudflare, Mozilla da Facebook suna haɓaka BinaryAST don haɓaka loda JavaScript

Cloudflare, Mozilla da Facebook suna haɓaka BinaryAST don haɓaka loda JavaScript

Lokacin sarrafa JavaScript, ana kashe lokaci mai yawa a lokacin lodawa da daidaitawa na lambar. Idan aka yi la’akari da cewa yawan zazzagewar JavaScript a cikin shahararrun shafuka yana kusa da 10 MB (misali, na LinkedIn - 7.2 MB, Facebook - 7.1 MB, Gmail - 3.9 MB), aikin farko na JavaScript yana gabatar da babban jinkiri. Har ila yau, matakin tantancewa a gefen burauzar yana raguwa saboda rashin iya yin cikakken gina AST akan tashi yayin da aka loda lambar (mai binciken dole ne ya jira toshe lambobin don kammala lodi, kamar ƙarshen ayyuka, don samun su. bayanin da ya ɓace don tantance abubuwan da ke yanzu).

Suna ƙoƙarin warware matsalar a wani ɓangare ta hanyar rarraba lambar a cikin ƙaramin tsari da matsawa, da kuma ta hanyar caching bytecode da mai bincike ya samar. A kan rukunin yanar gizo na zamani, ana sabunta lambar sau da yawa, don haka caching kawai a wani yanki na warware matsalar. WebAssembly zai iya zama mafita, amma yana buƙatar bugu a sarari a cikin lambar kuma bai dace da saurin sarrafa lambar JavaScript da ke da ba.

Wani zaɓi kuma shine don isar da shirye-shiryen da aka haɗa ta hanyar rubutun JavaScript maimakon rubutun JavaScript, amma masu haɓaka injin binciken suna adawa da shi saboda bytecode na ɓangare na uku yana da wahalar tantancewa, sarrafa shi kai tsaye na iya haifar da rarrabuwar gidan yanar gizo, ƙarin haɗarin tsaro sun taso, da haɓakar ana buƙatar tsarin bytecode na duniya.

BinaryAST yana ba ku damar dacewa da haɓaka lambar ku na yanzu da samfurin bayarwa ba tare da ƙirƙirar sabon bytecode ko canza yaren JavaScript ba. Girman bayanai a cikin tsarin BinaryAST yana kwatankwacin matsawa matsa lamba na JavaScript, kuma saurin sarrafawa ta hanyar kawar da lokacin tantance rubutun tushe yana ƙaruwa sosai. Bugu da ƙari, tsarin yana ba da damar haɗawa zuwa bytecode kamar yadda aka ɗora BinaryAST, ba tare da jiran duk bayanai don kammala ba. Bugu da ƙari, ƙaddamarwa a gefen uwar garke yana ba ku damar ware ayyukan da ba a yi amfani da su ba da kuma lambar da ba ta dace ba daga wakilcin BinaryAST da aka dawo, wanda, lokacin da aka yi amfani da shi a gefen mai bincike, yana ɓata lokaci duka biyu da kuma watsar da zirga-zirgar da ba dole ba.

Siffar BinaryAST ita ce ikon dawo da JavaScript mai karantawa wanda ba daidai yake da sigar asali ba, amma daidai yake da ma'ana kuma ya haɗa da sunaye iri ɗaya na masu canji da ayyuka (BinaryAST yana adana sunaye, amma baya adana bayanai game da matsayi a cikin code, tsarawa da sharhi). Wani gefen tsabar kudin shine fitowar sabbin hanyoyin kai hari, amma bisa ga masu haɓakawa, sun fi ƙanƙanta da iya sarrafawa fiye da lokacin amfani da madadin, kamar rarraba bytecode.

Gwaje-gwaje na lambar facebook.com ya nuna cewa yin amfani da JavaScript yana cinye 10-15% na albarkatun CPU da rarrabawa yana ɗaukar lokaci fiye da samar da bytecode da farkon lambar code don JIT. A cikin injin SpiderMonkey, lokacin gina AST gaba ɗaya yana ɗaukar 500-800 ms, kuma amfani da BinaryAST ya rage wannan adadi da 70-90%.
Gabaɗaya, don yawancin wasan wuta na yanar gizo, lokacin amfani da BinaryAST, lokacin fassarar JavaScript yana raguwa da 3-10% a cikin yanayin ba tare da ingantawa ba kuma ta 90-97% lokacin da yanayin yin watsi da ayyukan da ba a yi amfani da shi ba.
Lokacin gudanar da gwajin gwajin JavaScript na 1.2 MB, ta amfani da BinaryAST ya ba da damar lokacin farawa ya yi sauri daga 338 zuwa 314 ms akan tsarin tebur (Intel i7) kuma daga 2019 zuwa 1455 ms akan na'urar hannu (HTC One M8).

source: budenet.ru

Add a comment