Nga miihini mai i Cloudflare, Mozilla, Facebook me Bloomberg
Mo te whakamatau
Kei te waatea kē a BinaryAST
I te wa e tukatuka ana i te JavaScript, he nui te wa e pau ana i roto i te waahanga uta me te waahi o te waehere. Ki te whakaaro ko te nui o te JavaScript kua tangohia i runga i nga waahi rongonui maha e tata ana ki te 10 MB (hei tauira, mo LinkedIn - 7.2 MB, Facebook - 7.1 MB, Gmail - 3.9 MB), ko te tukatuka tuatahi o JavaScript ka whakaatu i te roa nui. Ko te wahanga parsing i te taha o te kaitirotiro ka puhoi hoki na te kore e kaha ki te hanga katoa i te AST i runga i te rere i te wa e utaina ana te waehere (me tatari te kaitirotiro mo nga poraka waehere kia oti te uta, penei i te mutunga o nga mahi, kia whiwhi kei te ngaro nga korero hei whakamaarama i nga huānga o naianei).
E ngana ana ratou ki te whakaoti i tetahi waahanga o te raru ma te tohatoha i te waehere i roto i te ahua iti me te kopiri, me te keteroki i te bytecode hangaia e te kaitirotiro. I runga i nga waahi hou, he maha nga wa ka whakahouhia te waehere, no reira ko te keteroki anake te whakaoti i te raru. He otinga pea a WebAssembly, engari me tino patopato i roto i te waehere, kaore i te pai mo te tere ake i te tukatuka o te waehere JavaScript.
Ko tetahi atu whiringa ko te tuku bytecode kua oti te hanga hei utu mo nga tuhinga JavaScript, engari kei te whakahee nga kaiwhakawhanake miihini tirotiro na te mea he uaua ki te manatoko te bytecode-tuatoru, ko tana tukatuka tika ka arahi ki te whakarōpūtanga Tukutuku, ka ara ake etahi atu tupono haumarutanga, me te whanaketanga o ka hiahiatia he whakatakotoranga bytecode.
Ko te BinaryAST ka taea e koe te whakauru ki to tauira whanaketanga waehere me to tauira tuku me te kore e hanga i te bytecode hou, te whakarereke ranei i te reo JavaScript. Ko te rahi o nga raraunga i roto i te whakatakotoranga BinaryAST he rite ki te waehere JavaScript iti kua whakakopekehia, a ko te tere o te tukatuka ma te whakakore i te waahanga panui tuhinga ka tino piki ake. I tua atu, ka taea e te whakatakotoranga te whakahiato ki te bytecode i te mea ka utaina a BinaryAST, me te kore e tatari kia oti nga raraunga katoa. I tua atu, ko te panui i te taha o te tūmau ka taea e koe te whakakore i nga mahi kaore i whakamahia me te waehere kore mai i te tohu BinaryAST kua whakahokia mai, na, i te wa e paopao ana ki te taha tirotiro, ka pau te wa e rua ki te tarai me te tuku i nga waka koretake.
Ko tetahi ahuatanga o BinaryAST ko te kaha ki te whakahoki i te JavaScript ka taea te panui kaore i te rite ki te putanga taketake, engari he rite tonu te ahua me te whakauru i nga ingoa o nga taurangi me nga mahi (Ka tiakina e BinaryAST nga ingoa, engari kaore e tiakina nga korero mo nga tuunga i roto i te waehere, whakatakotoranga me nga korero). Ko tetahi atu taha o te moni ko te putanga o nga vectors whakaeke hou, engari e ai ki nga kaihanga, he iti ake, he kaha ake te whakahaere i te wa e whakamahi ana i nga waahanga rereke, penei i te tohatoha bytecode.
Ko nga whakamatautau o te waehere facebook.com i whakaatu ko te poroporo JavaScript ka pau te 10-15% o nga rauemi CPU me te porotiti ka nui ake te wa atu i te whakaputa bytecode me te whakangao waehere tuatahi mo JIT. I roto i te miihini SpiderMonkey, ko te wa ki te hanga katoa i te AST e 500-800 ms, me te whakamahi i te BinaryAST kua whakahekehia tenei ahua e 70-90%.
I te nuinga o te waa, mo te nuinga o nga paahitanga tukutuku, i te wa e whakamahi ana i te BinaryAST, ka whakahekehia te wa porotiti JavaScript e 3-10% i roto i te aratau kaore he arotautanga me te 90-97% ka whakahohehia te aratau o te wareware i nga mahi kaore i whakamahia.
I te wa e whakahaere ana i te huinga whakamatautau JavaScript 1.2 MB, ma te whakamahi i te BinaryAST i whakaaetia te wa whakaoho kia tere ake i te 338 ki te 314 ms i runga i te punaha papamahi (Intel i7) me te 2019 ki te 1455 ms i runga i te taputapu pūkoro (HTC One M8).
Source: opennet.ru