Cloudflare, Mozilla ndi Facebook amapanga BinaryAST kuti ifulumizitse kutsitsa kwa JavaScript

Mainjiniya ochokera ku Cloudflare, Mozilla, Facebook ndi Bloomberg adalimbikitsa mtundu watsopano BinaryAST kufulumizitsa kutumiza ndi kukonza JavaScript code potsegula masamba mu msakatuli. BinaryAST imasuntha gawo lolowera mbali ya seva ndikupereka mtengo wongopeka kale (AST). Mukalandira BinaryAST, msakatuli amatha kupita kumalo ophatikizirapo, ndikudutsitsa khodi yoyambira ya JavaScript.

Kuyesedwa kukonzekera kukhazikitsidwa koperekedwa pansi pa layisensi ya MIT. Zigawo za Node.js zimagwiritsidwa ntchito pogawa, ndipo kachidindo kakukhathamiritsa ndi m'badwo wa AST walembedwa mu Rust. Thandizo la msakatuli
BinaryAST ikupezeka kale mkati amamanga usiku Firefox. Encoder mu BinaryAST itha kugwiritsidwa ntchito pomaliza zida zamasamba komanso pakuyika zolemba zamasamba akunja kumbali ya projekiti kapena netiweki yotumizira zinthu. Pakalipano, ndondomeko yokhazikika ya BinaryAST ndi gulu logwira ntchito yayamba kale Chithunzi cha ECMA TC39, pambuyo pake mtunduwo udzatha kukhala limodzi ndi njira zomwe zilipo, monga gzip ndi brotli.

Cloudflare, Mozilla ndi Facebook amapanga BinaryAST kuti ifulumizitse kutsitsa kwa JavaScript

Cloudflare, Mozilla ndi Facebook amapanga BinaryAST kuti ifulumizitse kutsitsa kwa JavaScript

Mukakonza JavaScript, nthawi yochulukirapo imathera pakutsitsa ndikuyika kachidindo. Poganizira kuti voliyumu ya JavaScript yotsitsidwa pamasamba ambiri otchuka ili pafupi ndi 10 MB (mwachitsanzo, kwa LinkedIn - 7.2 MB, Facebook - 7.1 MB, Gmail - 3.9 MB), kukonza koyambirira kwa JavaScript kumabweretsa kuchedwa kwambiri. Gawo loyang'ana kumbali ya asakatuli limachepetsanso chifukwa cholephera kumanga AST pa ntchentche pamene code imayikidwa (msakatuli amayenera kudikirira kuti midadada amalize kutsitsa, monga kutha kwa ntchito, kuti apeze. zidziwitso zomwe zikusoweka kusanthula zinthu zomwe zilipo).

Akuyesera kuthetsa vutolo pang'ono pogawa ma code mu mawonekedwe ocheperako komanso oponderezedwa, komanso posungira bytecode yopangidwa ndi osatsegula. Pamasamba amakono, code imasinthidwa nthawi zambiri, kotero caching imathetsa vutoli pang'ono. WebAssembly ikhoza kukhala yankho, koma pamafunika kulemba momveka bwino mu code ndipo siyoyenera kufulumizitsa kukonza kwa JavaScript code yomwe ilipo.

Njira ina ndikupereka ma bytecode okonzeka opangidwa m'malo mwa JavaScript, koma opanga injini zakusaka amatsutsana nazo chifukwa bytecode yachitatu ndizovuta kutsimikizira, kukonza kwake mwachindunji kungayambitse kusanja kwa Webusayiti, ziwopsezo zina zachitetezo zimabuka, komanso kukula kwa mtundu wapadziko lonse wa bytecode ukufunika.

BinaryAST imakulolani kuti mugwirizane ndi kakulidwe ka khodi yanu yamakono ndi njira yobweretsera popanda kupanga bytecode yatsopano kapena kusintha chinenero cha JavaScript. Kukula kwa data mu mtundu wa BinaryAST ndi wofanana ndi code ya JavaScript yokhazikika, ndipo liwiro la kukonza pochotsa gawo lomwe limayambira limachulukirachulukira. Kuphatikiza apo, mawonekedwewa amalola kuphatikizika kwa bytecode monga BinaryAST imakwezedwa, osadikirira kuti deta yonse ithe. Kuphatikiza apo, kuyika pa mbali ya seva kumakupatsani mwayi wopatula ntchito zosagwiritsidwa ntchito ndi ma code osafunikira kuchokera pazoyimira za BinaryAST zomwe zabwerera, zomwe, poyang'ana pa msakatuli, zimawononga nthawi zonse ndikufalitsa magalimoto osafunikira.

Mbali ya BinaryAST ndikuthanso kubwezeretsa JavaScript yowerengeka yomwe siili yofanana ndendende ndi mtundu woyambirira, koma ndi yofanana ndi mawu ndipo imaphatikizapo mayina omwewo amitundu ndi ntchito (BinaryAST imasunga mayina, koma samasunga zambiri za maudindo mu code, masanjidwe ndi ndemanga). Mbali ina ya ndalamayi ndikutuluka kwa ma vectors atsopano, koma malinga ndi omwe akupanga, iwo ndi ochepa kwambiri komanso amatha kuwongolera kusiyana ndi kugwiritsa ntchito njira zina, monga kugawa kwa bytecode.

Mayeso a nambala ya facebook.com adawonetsa kuti kuyika JavaScript kumawononga 10-15% yazinthu za CPU ndipo kugawa kumatenga nthawi yochulukirapo kuposa kupanga bytecode ndi kupanga ma code oyambira a JIT. Mu injini ya SpiderMonkey, nthawi yomanga kwathunthu AST imatenga 500-800 ms, ndipo kugwiritsa ntchito BinaryAST kwachepetsa chiwerengerochi ndi 70-90%.
Nthawi zambiri, pama fireworks ambiri a pa intaneti, mukamagwiritsa ntchito BinaryAST, JavaScript parsing nthawi imachepetsedwa ndi 3-10% munjira popanda kukhathamiritsa komanso ndi 90-97% pomwe njira yonyalanyaza ntchito zosagwiritsidwa ntchito yayatsidwa.
Mukamagwiritsa ntchito mayeso a JavaScript a 1.2 MB, kugwiritsa ntchito BinaryAST kunalola kuti nthawi yoyambira ifulumire kuchoka pa 338 mpaka 314 ms pakompyuta (Intel i7) komanso kuchokera ku 2019 mpaka 1455 ms pa foni (HTC One M8).

Source: opennet.ru

Kuwonjezera ndemanga