Cloudflare, Mozilla na Facebook na-emepụta BinaryAST iji mee ka nbudata Javascript dị ngwa

Ndị injinia sitere na Cloudflare, Mozilla, Facebook na Bloomberg chụọ usoro ọhụrụ Ọnụọgụ abụọ iji mee ka nnyefe na nhazi koodu Javascript dị ngwa mgbe ị na-emepe saịtị na ihe nchọgharị ahụ. BinaryAST na-ebugharị usoro ntugharị n'akụkụ ihe nkesa wee na-enye osisi syntax nke emepụtaralarị (AST). Mgbe ị nwetasịrị BinaryAST, ihe nchọgharị ahụ nwere ike ịga n'ihu ozugbo na nhazi mkpokọta, na-agafe ịkọwa koodu isi mmalite Javascript.

Maka ule kwadebere mmejuputa ntụaka ewepụtara n'okpuru ikikere MIT. A na-eji ihe ndị Node.js eme ihe maka ntule, na koodu maka njikarịcha na ọgbọ AST ka edere na Rust. Nkwado n'akụkụ ihe nchọgharị
BinaryAST adịlarị na abalị na-ewuli elu Firefox. Enwere ike iji koodu ntinye dị na BinaryAST ma na njedebe saịtị ngwaọrụ yana maka nchịkọta ngwugwu nke saịtị mpụga n'akụkụ proxy ma ọ bụ netwọk nnyefe ọdịnaya. Ugbu a, usoro nhazi nke BinaryAST site na otu ọrụ amalitelarị ECMA TC39, emesia usoro a ga-enwe ike ibikọ ọnụ na ụzọ mkpakọ ọdịnaya dị, dị ka gzip na brotli.

Cloudflare, Mozilla na Facebook na-emepụta BinaryAST iji mee ka nbudata Javascript dị ngwa

Cloudflare, Mozilla na Facebook na-emepụta BinaryAST iji mee ka nbudata Javascript dị ngwa

Mgbe ị na-ahazi Javascript, a na-etinye oge dị ukwuu na ntinye na nhazi nke koodu ahụ. N'iburu n'uche na olu JavaScript ebudatara n'ọtụtụ saịtị ndị a ma ama dị nso 10 MB (dịka ọmụmaatụ, maka LinkedIn - 7.2 MB, Facebook - 7.1 MB, Gmail - 3.9 MB), nhazi mbụ nke Javascript na-ewebata nnukwu igbu oge. A na-ebelatakwa ogbo a na-atụgharị n'akụkụ ihe nchọgharị n'ihi enweghị ike ịrụ ọrụ AST n'ụzọ zuru oke n'ihi na etinyere koodu ahụ (ihe nchọgharị ahụ ga-echere koodu blocks iji mezue nbudata, dị ka njedebe nke ọrụ, iji nweta. ozi na-efu iji kpachapụ ihe ndị dị ugbu a).

Ha na-agbalị idozi nsogbu ahụ n'akụkụ ụfọdụ site na ikesa koodu ahụ n'ụdị dị ntakịrị na nke abịakọrọ, yana site na caching bytecode nke ihe nchọgharị ahụ mepụtara. Na saịtị ọgbara ọhụrụ, a na-emelite koodu ahụ ọtụtụ oge, yabụ caching naanị akụkụ ụfọdụ na-edozi nsogbu ahụ. WebAssembly nwere ike ịbụ ihe ngwọta, mana ọ na-achọ ka ịpịnye koodu ahụ nke ọma ma ọ dabara nke ọma maka ịme ngwa ngwa nhazi koodu Javascript dị ugbu a.

Nhọrọ ọzọ bụ ịnyefe bytecode chịkọtara nke ọma kama ịde ederede Javascript, mana ndị na-emepụta ihe nchọgharị na-emegide ya n'ihi na bytecode nke atọ siri ike ịchọpụta, nhazi ya ozugbo nwere ike ibute stratification Weebụ, ihe egwu nchekwa ọzọ bilitere, yana mmepe nke a chọrọ usoro bytecode zuru ụwa ọnụ.

BinaryAST na-enye gị ohere ịbanye n'ime koodu mmepe na ụdị nnyefe gị ugbu a na-emepụtaghị bytecode ọhụrụ ma ọ bụ gbanwee asụsụ Javascript. Ogo data dị n'ụdị BinaryAST dị ka koodu Javascript agbakwunyere agbakwunyere, yana ọsọ nhazi site na iwepu usoro ntụgharị ederede isi mmalite na-abawanye nke ọma. Na mgbakwunye, usoro ahụ na-enye ohere ịchịkọta bytecode ka a na-ebugharị BinaryAST, na-echeghị ka data niile mezue. Tụkwasị na nke ahụ, ịkọwapụta n'akụkụ ihe nkesa na-enye gị ohere ịwepụ ọrụ ndị a na-ejighị n'aka na koodu na-adịghị mkpa site na nnochite anya BinaryAST, nke, mgbe ị na-atụgharị n'akụkụ ihe nchọgharị ahụ, na-egbu oge ma na-ebufe ma na-ebufe okporo ụzọ na-adịghị mkpa.

Otu njirimara nke BinaryAST bụkwa ikike iweghachi Javascript a na-agụ nke na-abụghị kpọmkwem otu ụdị nke mbụ, ma ọ bụ ihe nhata ma na-agụnye otu aha nke mgbanwe na ọrụ (BinaryAST na-echekwa aha, ma ọ dịghị echekwa ozi gbasara ọnọdụ na . koodu, nhazi na nkọwa). N'akụkụ nke ọzọ nke mkpụrụ ego bụ mpụta nke ọhụrụ ọgụ vectors, ma dị ka ndị mmepe si kwuo, ha dị nnọọ nta ma na-achịkwa karịa mgbe eji ụzọ ọzọ, dị ka bytecode nkesa.

Nnwale nke koodu facebook.com gosiri na ịkọwapụta Javascript na-eri 10-15% nke akụrụngwa CPU na ntughari na-ewe oge karịa ịmepụta bytecode na ọgbọ koodu mbụ maka JIT. N'ime igwe SpiderMonkey, oge iji wuo AST kpamkpam na-ewe 500-800 ms, na ojiji nke BinaryAST belatara ọnụ ọgụgụ a site na 70-90%.
N'ozuzu, maka ọtụtụ ọkụ ọkụ weebụ, mgbe ị na-eji BinaryAST, oge nchịkọta Javascript na-ebelata site na 3-10% na ọnọdụ na-enweghị njikarịcha yana site na 90-97% mgbe usoro nke ileghara ọrụ ndị a na-ejighị mee ihe anya.
Mgbe ị na-agba ọsọ 1.2 MB Javascript ule suite, iji BinaryAST kwere ka oge mmalite si na 338 ruo 314 ms na sistemụ desktọpụ (Intel i7) yana site na 2019 ruo 1455 ms na ngwaọrụ mkpanaka (HTC One M8).

isi: opennet.ru

Tinye a comment