Verkfræðingar frá Cloudflare, Mozilla, Facebook og Bloomberg
Til prófunar
BinaryAST er nú þegar fáanlegt í
Við vinnslu JavaScript fer umtalsverðum tíma í hleðslu- og þáttunarfasa kóðans. Með hliðsjón af því að magn niðurhalaðs JavaScript á mörgum vinsælum síðum er nálægt 10 MB (til dæmis fyrir LinkedIn - 7.2 MB, Facebook - 7.1 MB, Gmail - 3.9 MB), leiðir upphafsvinnsla JavaScript til verulegrar seinkun. Einnig hægist á þáttunarstigi vaframegin vegna vanhæfni til að byggja upp AST að fullu á flugi þegar kóðinn er hlaðinn (vafrinn þarf að bíða eftir kóðablokkum til að ljúka hleðslu, svo sem lok aðgerða, til að fá upplýsingarnar sem vantar til að flokka núverandi þætti).
Þeir eru að reyna að leysa vandamálið að hluta með því að dreifa kóðanum í lágmarkað og þjappað formi, sem og með því að vista bækikóðann sem myndaður er í vafranum. Á nútíma síðum er kóðinn uppfærður nokkuð oft, svo skyndiminni leysir vandamálið aðeins að hluta. WebAssembly gæti verið lausn, en það krefst skýrrar innsláttar kóðans og hentar ekki vel til að flýta fyrir vinnslu á núverandi JavaScript kóða.
Annar valkostur er að afhenda tilbúinn samansettan bækakóða í stað JavaScript forskrifta, en vafravélaframleiðendur eru á móti því vegna þess að erfitt er að sannreyna bækikóða þriðja aðila, bein vinnsla hans getur leitt til lagskiptingar á vefnum, aukin öryggisáhætta skapast og þróun alhliða bækakóðasnið er krafist.
BinaryAST gerir þér kleift að passa inn í núverandi kóðaþróunar- og afhendingarlíkan þitt án þess að búa til nýjan bækikóða eða breyta JavaScript tungumálinu. Stærð gagna á BinaryAST sniði er sambærileg við þjappaðan smækkaðan JavaScript kóða og vinnsluhraði með því að útrýma frumtextaþáttunarfasa eykst áberandi. Að auki gerir sniðið kleift að safna saman í bætikóða þegar BinaryAST er hlaðið, án þess að bíða eftir að öll gögn ljúki. Að auki gerir þáttun á netþjóninum þér kleift að útiloka ónotaðar aðgerðir og óþarfa kóða frá BinaryAST framsetningunni sem skilað er, sem, þegar þáttun er á vafrahliðinni, eyðir tíma bæði í þáttun og sendingu óþarfa umferðar.
Eiginleiki BinaryAST er einnig hæfileikinn til að endurheimta læsilegt JavaScript sem er ekki nákvæmlega það sama og upprunalega útgáfan, en er merkingarlega jafngilt og inniheldur sömu nöfn breytna og aðgerða (BinaryAST vistar nöfn, en vistar ekki upplýsingar um stöður í kóða, snið og athugasemdir). Hin hliðin á peningnum er tilkoma nýrra árásarvigra, en að sögn þróunaraðilanna eru þeir mun minni og stjórnanlegari en þegar notaðir eru valkostir, eins og bækikóðadreifing.
Prófanir á facebook.com kóðanum sýndu að þáttun JavaScript eyðir 10-15% af CPU auðlindum og þáttun tekur meiri tíma en að búa til bætikóða og upphafskóðagerð fyrir JIT. Í SpiderMonkey vélinni tekur tíminn til að byggja algjörlega upp AST 500-800 ms og notkun BinaryAST hefur lækkað þessa tölu um 70-90%.
Almennt séð, fyrir flesta vefflugelda, þegar BinaryAST er notað, er JavaScript þáttunartími styttur um 3-10% í ham án hagræðingar og um 90-97% þegar hátturinn til að hunsa ónotaðar aðgerðir er virkur.
Þegar keyrt var 1.2 MB JavaScript prófunarsett, leyfði notkun BinaryAST ræsingartímanum að flýta úr 338 í 314 ms á skjáborðskerfi (Intel i7) og frá 2019 í 1455 ms á farsíma (HTC One M8).
Heimild: opennet.ru