I-Cloudflare, i-Mozilla kanye ne-Facebook bathuthukisa i-BinaryAST ukusheshisa ukulayishwa kwe-JavaScript

Onjiniyela abavela ku-Cloudflare, Mozilla, Facebook kanye ne-Bloomberg kuphakanyisiwe ifomethi entsha Kanambambili ukusheshisa ukulethwa nokucubungula kwekhodi ye-JavaScript lapho uvula amasayithi esipheqululini. I-BinaryAST ihambisa isigaba sokuhlaziya ohlangothini lweseva futhi inikeze isihlahla se-syntax esivele senziwe (I-AST). Lapho sithola i-BinaryAST, isiphequluli singadlulela ngokushesha esigabeni sokuhlanganiswa, sidlule ukuhlukanisa ikhodi yomthombo ye-JavaScript.

Okokuhlola ilungisiwe ukusetshenziswa kwereferensi okuhlinzekwe ngaphansi kwelayisensi ye-MIT. Izingxenye ze-Node.js zisetshenziselwa ukuncozulula, futhi ikhodi yokuthuthukisa kanye nesizukulwane se-AST ibhalwe ngeRust. Ukusekela ohlangothini lwesiphequluli
I-BinaryAST isivele itholakala ku yakha ebusuku IFirefox. Isifaki khodi ku-BinaryAST singasetshenziswa kokubili ezingeni lokugcina lamathuluzi esayithi nasekupakisheni izikripthi zamasayithi angaphandle ohlangothini lommeleli noma inethiwekhi yokulethwa kokuqukethwe. Njengamanje, inqubo yokumiswa kwe-BinaryAST yiqembu elisebenzayo isiqalile I-ECMA TC39, ngemva kwalokho ifomethi izokwazi ukuhlalisana nezindlela ezikhona zokuminyanisa okuqukethwe, njenge-gzip ne-brotli.

I-Cloudflare, i-Mozilla kanye ne-Facebook bathuthukisa i-BinaryAST ukusheshisa ukulayishwa kwe-JavaScript

I-Cloudflare, i-Mozilla kanye ne-Facebook bathuthukisa i-BinaryAST ukusheshisa ukulayishwa kwe-JavaScript

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

Engeza amazwana