Cloudflare, Mozilla le Facebook li hlahisa BinaryAST ho potlakisa ho kenya JavaScript

Baenjiniere ba tsoang Cloudflare, Mozilla, Facebook le Bloomberg nyeheloa sebopeho se secha binaryAST ho potlakisa ho tsamaisoa le ho sebetsa ha khoutu ea JavaScript ha u bula libaka ho sebatli. BinaryAST e nka karolo ea parsing ho ea lehlakoreng la seva mme e fana ka sefate sa syntax se seng se thehiloe (AST). Ha sebatli se fumana BinaryAST, sebatli se ka ea sethaleng sa ho bokella hanghang, sa feta ho arola khoutu ea mohloli oa JavaScript.

Bakeng sa liteko lokisitsoe ts'ebetsong ea litšupiso e fanoeng tlas'a laesense ea MIT. Bakeng sa ho arola, ho sebelisoa likarolo tsa Node.js, 'me khoutu ea ho ntlafatsa le ho hlahisa AST e ngotsoe ka Rust. Tšehetso ea lehlakore la sebatli
BinaryAST e se e fumaneha ka kopano ya bosiu Firefox. Encoder ho BinaryAST e ka sebelisoa ka bobeli boemong ba lisebelisoa tsa sebaka sa ho qetela, le bakeng sa ho paka litokomane tsa libaka tse ka ntle ka lehlakoreng la proxy kapa marang-rang a ho fana ka litaba. Hona joale, mokhoa oa ho emisa BinaryAST ka sehlopha sa basebetsi o se o qalile. ECMA TC39, ka mor'a moo sebopeho se ka ba teng le mekhoa e teng ea ho hatella litaba tse fanoeng, joalo ka gzip le brotli.

Cloudflare, Mozilla le Facebook li hlahisa BinaryAST ho potlakisa ho kenya JavaScript

Cloudflare, Mozilla le Facebook li hlahisa BinaryAST ho potlakisa ho kenya JavaScript

Nako e kholo ts'ebetsong ea JavaScript e nkuoa ke karolo ea ho kenya le ho arola khoutu. Ha ho nahanoa hore palo ea JavaScript e jarollotsoeng libakeng tse ngata tse tsebahalang e ntse e atamela 10 MB (mohlala, bakeng sa LinkedIn - 7.2 MB, Facebook - 7.1 MB, Gmail - 3.9 MB), ts'ebetso ea pele ea JavaScript e hlahisa tieho e kholo. Sethala sa ho qhekella ka lehlakoreng la sebatli se boetse se fokotseha ka lebaka la ho se khonehe ho aha AST ka botlalo ha khoutu e ntse e kentsoe (sebatli se tlameha ho emela li-block tsa khoutu ho qeta ho kenya, mohlala, pheletso ea mesebetsi, ho fumana lintlha tse sieo ho bapisa lintlha tsa hajoale).

Ka karolo e 'ngoe, ba leka ho rarolla bothata ka ho aba khoutu ka mokhoa o fokolang le o hatelitsoeng, hammoho le ho boloka "bytecode" e hlahisitsoeng ke sebatli. Liwebsaeteng tsa sejoale-joale, khoutu e ntlafatsoa khafetsa, kahoo caching e rarolla bothata hanyane. WebAssembly e ka ba tharollo, empa e hloka tšebeliso ea ho thaepa ka mokhoa o hlakileng khoutu mme ha e lokele hantle bakeng sa ho potlakisa ts'ebetso ea khoutu ea JavaScript e seng e ntse e le teng.

Kgetho e 'ngoe ke ho romella li-bytecode tse hlophisitsoeng esale pele ho fapana le lingoloa tsa JavaScript, empa baetsi ba enjine ea sebatli ba hanyetsana le hobane ho thata ho netefatsa bytecode ea motho oa boraro, ts'ebetso ea eona e tobileng e ka lebisa ho tlhophiso ea Webo, likotsi tse eketsehileng tsa ts'ireletso li hlaha, le nts'etsopele ea bokahohle. mokhoa oa bytecode oa hlokahala.

BinaryAST e u fa monyetla oa ho kena molemong oa nts'etsopele ea khoutu ea hajoale le mokhoa oa ho tsamaisa ntle le ho theha bytecode e ncha le ntle le ho fetola puo ea JavaScript. Boholo ba data ka sebopeho sa BinaryAST bo ka bapisoa le khoutu ea JavaScript e hatelitsoeng, mme lebelo la ts'ebetso le eketseha ka mokhoa o hlakileng ka lebaka la ho qheleloa ka thoko ho karolo ea phallo ea khoutu ea mohloli. Ho phaella moo, sebopeho se lumella ho bokella bytecode ha BinaryAST e laeloa, ntle le ho emela hore data eohle e amoheloe. Ho phaella moo, ho arola ka lehlakoreng la seva ho u lumella ho qhelela ka thōko mesebetsi e sa sebelisoang le khoutu e eketsehileng ho tsoa ho boemeli ba BinaryAST bo khutlisitsoeng, boo, ha bo aroloa ka lehlakoreng la sebatli, bo nkang nako ho hlalosa le ho fetisetsa sephethephethe se eketsehileng.

Karolo ea BinaryAST e boetse ke bokhoni ba ho tsosolosa JavaScript e baloang e sa lumellaneng le phetolelo ea pele, empa e lekana ka mantsoe 'me e kenyelletsa mabitso a tšoanang a mefuta-futa le mesebetsi (BinaryAST e boloka mabitso, empa ha e boloke tlhahisoleseding mabapi le maemo a khoutu, ho fomata. le maikutlo). Lehlakore le leng la chelete ea tšepe ke ho hlaha ha li-vectors tse ncha tsa tlhaselo, empa ho ea ka bahlahisi, li nyane haholo ebile li khona ho laola ho feta mekhoa e meng e kang kabo ea bytecode.

Liteko tsa khoutu ea Facebook.com li bonts'itse hore 10-15% ea lisebelisoa tsa CPU li sebelisoa ho arola JavaScript le ho arola ho nka nako e telele ho feta tlhahiso ea bytecode le tlhahiso ea pele ea khoutu bakeng sa JIT. Ka enjene ea SpiderMonkey, nako ea ho haha ​​ka botlalo AST e nka 500-800 ms, 'me tšebeliso ea BinaryAST e fokolitse palo ena ka 70-90%.
Ka kakaretso, bakeng sa li-fireworks tse ngata tsa marang-rang, ha u sebelisa BinaryAST, nako ea ho qeta nako ea JavaScript e fokotsehile ka 3-10% ka mokhoa o sa ntlafatseng le ka 90-97% ha mokhoa oa ho hlokomoloha mesebetsi e sa sebelisoang o nolofalitsoe.
Ha o etsa tlhahlobo ea 1.2 MB JavaScript, ho sebelisa BinaryAST ho potlakisitse nako ea ho qala ho tloha ho 338 ho isa ho 314 ms ho sistimi ea komporo (Intel i7) le ho tloha 2019 ho isa 1455 ms sesebelisoa sa mohala (HTC One M8).

Source: opennet.ru

Eketsa ka tlhaloso