Iinjineli ezivela kwi-Cloudflare, Mozilla, Facebook kunye neBloomberg
Ukuvavanya
I-BinaryAST sele ifumaneka kwi
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