I-Cloudflare, i-Mozilla kunye ne-Facebook ziphuhlisa i-BinaryAST ukukhawulezisa ukulayishwa kweJavaScript

Iinjineli ezivela kwi-Cloudflare, Mozilla, Facebook kunye neBloomberg wanikela ifomathi entsha Kanambambili ukukhawulezisa ukuhanjiswa kunye nokusebenza kwekhowudi yeJavaScript xa uvula iisayithi kwisiphequluli. I-BinaryAST ihambisa isigaba sokwahlula ukuya kwicala lomncedisi kwaye inikezela ngomthi osele wenziwe we-abstract syntax (AST). Emva kokufumana i-BinaryAST, isikhangeli sinokuthi siqhubele phambili ngokukhawuleza kwinqanaba lokudibanisa, ngokugqithisa ikhowudi yomthombo weJavaScript.

Ukuvavanya ilungisiwe ukuphunyezwa kwereferensi enikezelwe phantsi kwelayisenisi yeMIT. Amacandelo e-Node.js asetyenziselwa ukwahlula, kwaye ikhowudi yokuphucula kunye nokuveliswa kwe-AST ibhalwe kwi-Rust. Inkxaso yecala lebhrawuza
I-BinaryAST sele ifumaneka kwi yakha ngobusuku IFirefox. I-encoder kwi-BinaryAST ingasetyenziselwa zombini kwinqanaba lesixhobo sokugqibela kunye nokupakisha izikripthi zeendawo zangaphandle kwicala le-proxy okanye inethiwekhi yokuhanjiswa komxholo. Okwangoku, inkqubo yokulinganisa i-BinaryAST liqela elisebenzayo sele iqalile ECMA TC39, emva kokuba ifomathi izakukwazi ukuhlalisana kunye neendlela zocinezelo lomxholo okhoyo, njenge gzip kunye ne brotli.

I-Cloudflare, i-Mozilla kunye ne-Facebook ziphuhlisa i-BinaryAST ukukhawulezisa ukulayishwa kweJavaScript

I-Cloudflare, i-Mozilla kunye ne-Facebook ziphuhlisa i-BinaryAST ukukhawulezisa ukulayishwa kweJavaScript

Xa kusetyenzwa iJavaScript, ixesha elibalulekileyo lichithwa kwisigaba sokulayisha kunye nokwahlulahlula ikhowudi. Ukuqwalasela ukuba umthamo weJavaScript ekhutshelweyo kwiindawo ezininzi ezidumileyo zisondele kwi-10 MB (umzekelo, kwi-LinkedIn - 7.2 MB, i-Facebook - 7.1 MB, i-Gmail - 3.9 MB), ukuqhutyelwa kokuqala kweJavaScript kwazisa ukulibaziseka okukhulu. Inqanaba lokwahlula kwicala lomkhangeli zincwadi liyacotha ngenxa yokungakwazi ukwakha ngokupheleleyo i-AST kwimpukane njengoko ikhowudi ilayishiwe (isikhangeli kufuneka silinde iibhloko zekhowudi ukugqiba ukulayisha, njengokuphela kwemisebenzi, ukufumana. ulwazi olulahlekileyo lokucazulula izinto zangoku).

Bazama ukusombulula ingxaki ngokuyinxenye ngokusabalalisa ikhowudi kwifom encinci kunye nexinzelelo, kunye ne-caching ye-bytecode eyenziwe ngumkhangeli. Kwiisayithi zanamhlanje, ikhowudi ihlaziywa rhoqo, ngoko ke i-caching iyisombulula ngokuyinxenye ingxaki. I-WebAssembly ingaba sisisombululo, kodwa idinga ukuchwetheza ngokucacileyo kwikhowudi kwaye ayifanelekanga kakuhle ukukhawuleza ukuqhutyelwa kwekhowudi yeJavaScript ekhoyo.

Enye inketho kukuhambisa i-bytecode esele iqulunqwe endaweni yemibhalo yeJavaScript, kodwa abaphuhlisi be-injini yesikhangeli bachasene nayo kuba i-bytecode yomntu wesithathu kunzima ukuyiqinisekisa, ukusetyenzwa kwayo ngokuthe ngqo kunokukhokelela kwi-Web stratification, imingcipheko eyongezelelweyo yokhuseleko ivela, kunye nophuhliso lwe-bytecode. iyafuneka ifomathi ye-bytecode jikelele.

I-BinaryAST ikuvumela ukuba ungene kuphuhliso lwekhowudi yakho yangoku kunye nemodeli yonikezelo ngaphandle kokudala i-bytecode entsha okanye ukutshintsha ulwimi lweJavaScript. Ubungakanani bedatha kwifomathi ye-BinaryAST buthelekiseka nekhowudi yeJavaScript ecinezelweyo, kunye nesantya sokucubungula ngokususa isigaba sokwahlula isicatshulwa somthombo sinyuka ngokubonakalayo. Ukongeza, ifomathi ivumela ukuhlanganiswa kwi-bytecode njengoko i-BinaryAST ilayishiwe, ngaphandle kokulinda ukuba yonke idatha igqitywe. Ukongeza, ukucazulula kwicala lomncedisi kukuvumela ukuba ungabandakanyi imisebenzi engasetyenziswanga kunye nekhowudi engafunekiyo ukusuka kumelo olubuyisiweyo lwe-BinaryAST, ethi, xa ucazulula kwicala lomkhangeli zincwadi, uchithe ixesha lokucazulula kunye nokuhambisa i-traffic engeyomfuneko.

Uphawu lwe-BinaryAST lukwanamandla okubuyisela iJavaScript efundekayo engafani ncam neyokuqala, kodwa ilingana ngokwesemantiki kwaye ibandakanya amagama afanayo eenguqu kunye nemisebenzi (i-BinaryAST igcina amagama, kodwa ayigcini ulwazi malunga nezikhundla ikhowudi, ukufomatha kunye nezimvo). Olunye uhlangothi lwengqekembe kukuvela kweevectors ezintsha zokuhlaselwa, kodwa ngokutsho kwabaphuhlisi, bancinci kakhulu kwaye balawuleka ngakumbi xa usebenzisa ezinye iindlela, ezifana nokusabalalisa i-bytecode.

Uvavanyo lwekhowudi ye-facebook.com lubonise ukuba ukucazulula iJavaScript kudla i-10-15% yezixhobo ze-CPU kwaye ukudibanisa kuthatha ixesha elide kunokuvelisa i-bytecode kunye nokuveliswa kwekhowudi yokuqala ye-JIT. Kwi-injini ye-SpiderMonkey, ixesha lokwakha ngokupheleleyo i-AST lithatha i-500-800 ms, kwaye ukusetyenziswa kwe-BinaryAST kuye kwanciphisa eli nani nge-70-90%.
Ngokubanzi, kwii-fireworks ezininzi zewebhu, xa usebenzisa i-BinaryAST, ixesha lokwahlula iJavaScript lincitshiswa ngo-3-10% kwimowudi ngaphandle kokuphucula kunye ne-90-97% xa indlela yokungahoyi imisebenzi engasetyenziswanga ivuliwe.
Xa usebenzisa i-1.2 MB isethi yovavanyo lweJavaScript, usebenzisa i-BinaryAST ivumele ixesha lokuqalisa ukukhawulezisa ukusuka kwi-338 ukuya kwi-314 ms kwi-desktop system (Intel i7) kwaye ukusuka kwi-2019 ukuya kwi-1455 ms kwisixhobo esiphathwayo (HTC One M8).

umthombo: opennet.ru

Yongeza izimvo