Mainjiniya ochokera ku Cloudflare, Mozilla, Facebook ndi Bloomberg
Kuyesedwa
BinaryAST ikupezeka kale mkati
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