Onjiniyela abavela ku-Cloudflare, Mozilla, Facebook kanye ne-Bloomberg
Okokuhlola
I-BinaryAST isivele itholakala ku
Lapho kucutshungulwa i-JavaScript, inani elibalulekile lesikhathi lichithwa esigabeni sokulayisha nokuhlukanisa ikhodi. Uma kucatshangelwa ukuthi ivolumu ye-JavaScript elandiwe kumasayithi amaningi adumile isondele ku-10 MB (isibonelo, ku-LinkedIn - 7.2 MB, Facebook - 7.1 MB, Gmail - 3.9 MB), ukucutshungulwa kokuqala kweJavaScript kwethula ukubambezeleka okukhulu. Isiteji sokuhlukanisa ngasohlangothini lwesiphequluli siphinde sehliswe ijubane ngenxa yokungakwazi ukwakha ngokugcwele i-AST empukaneni njengoba ikhodi ilayishwa (isiphequluli kufanele silinde amabhulokhi ekhodi ukuqedela ukulayisha, njengokuphela kwemisebenzi, ukuze sithole. ulwazi olulahlekile lokuhlaziya izici zamanje).
Bazama ukuxazulula inkinga ngokwengxenye ngokusabalalisa ikhodi ngendlela encishisiwe necindezelwe, kanye nangokufaka kunqolobane i-bytecode ekhiqizwe isiphequluli. Kumasayithi esimanje, ikhodi ibuyekezwa kaningi, ngakho ukulondoloza isikhashana kuxazulula inkinga kancane. I-WebAssembly ingaba yisixazululo, kodwa idinga ukuthayipha okucacile kukhodi futhi ayifaneleki kahle ukusheshisa ukucutshungulwa kwekhodi ekhona ye-JavaScript.
Enye inketho ukuletha i-bytecode ehlanganisiwe esenziwe ngomumo esikhundleni semibhalo ye-JavaScript, kodwa abathuthukisi benjini yesiphequluli bamelene nayo ngoba i-bytecode yenkampani yangaphandle kunzima ukuyiqinisekisa, ukucutshungulwa kwayo okuqondile kungaholela ekuhlukaniseni iWebhu, kuphakama izingozi ezengeziwe zokuphepha, kanye nokuthuthukiswa kwe-bytecode. ifomethi ye-bytecode yendawo yonke iyadingeka.
I-BinaryAST ikuvumela ukuthi ulingane nemodeli yakho yamanje yokuthuthukiswa kwekhodi kanye nokulethwa ngaphandle kokudala i-bytecode entsha noma ukushintsha ulimi lwe-JavaScript. Usayizi wedatha ngefomethi ye-BinaryAST ufaniswa nekhodi ye-JavaScript ecindezelwe, futhi isivinini sokucubungula ngokususa isigaba sokuhlaziya umbhalo womthombo sikhuphuka ngokuphawulekayo. Ngaphezu kwalokho, ifomethi ivumela ukuhlanganiswa ku-bytecode njengoba i-BinaryAST ilayishwa, ngaphandle kokulinda ukuthi yonke idatha iphele. Ukwengeza, ukuhlukanisa ohlangothini lweseva kukuvumela ukuthi ukhiphe imisebenzi engasetshenzisiwe kanye nekhodi engadingekile esethulweni se-BinaryAST esibuyisiwe, okuthi, lapho sihlahlela ngasohlangothini lwesiphequluli, sichithe isikhathi sokudlulisa nokudlulisa ithrafikhi engadingekile.
Isici se-BinaryAST futhi ikhono lokubuyisela i-JavaScript efundekayo engafani ncamashi nenguqulo yasekuqaleni, kodwa ilingana ngokoqobo futhi ihlanganisa amagama afanayo okuguquguqukayo nemisebenzi (I-BinaryAST igcina amagama, kodwa ayilondolozi ulwazi mayelana nezikhundla ikhodi, ukufometha namazwana). Olunye uhlangothi lohlamvu lwemali ukuvela kwama-vector amasha okuhlasela, kodwa ngokusho konjiniyela, mancane kakhulu futhi ayalawuleka kunalapho usebenzisa ezinye izindlela, njengokusabalalisa i-bytecode.
Ukuhlolwa kwekhodi ye-facebook.com kubonise ukuthi ukuhlukanisa i-JavaScript kudla u-10-15% wezinsiza ze-CPU futhi ukuhlukanisa kuthatha isikhathi esiningi kunokukhiqiza i-bytecode kanye nokukhiqizwa kwekhodi yokuqala ye-JIT. Enjinini ye-SpiderMonkey, isikhathi sokwakha ngokuphelele i-AST sithatha i-500-800 ms, futhi ukusetshenziswa kwe-BinaryAST kunciphise lesi sibalo ngo-70-90%.
Ngokuvamile, kuziqhumane eziningi zewebhu, uma usebenzisa i-BinaryAST, isikhathi sokuhlaziya se-JavaScript sincishiswa ngo-3-10% kumodi ngaphandle kokuthuthukisa futhi ngo-90-97% lapho imodi yokuziba imisebenzi engasetshenzisiwe inikwe amandla.
Lapho usebenzisa i-JavaScript yokuhlola engu-1.2 MB, ukusebenzisa i-BinaryAST kwavumela isikhathi sokuqalisa ukuthi sisheshise sisuka ku-338 siye ku-314 ms kusistimu yedeskithophu (Intel i7) futhi sisuka ku-2019 siye ku-1455 ms kudivayisi yeselula (HTC One M8).
Source: opennet.ru