Cloudflare, Mozilla uye Facebook vanogadzira BinaryAST kuti ikurumidze kurodha JavaScript

Mainjiniya kubva Cloudflare, Mozilla, Facebook uye Bloomberg inopiwa new format binaryAST kukurumidza kuendesa uye kugadzirisa kweJavaScript kodhi kana uchivhura mawebhusaiti mubrowser. BinaryAST inofambisa chikamu chekuisa kudivi reseva uye inopa yakatogadzirwa abstract syntax muti (AST) Paunenge wagamuchira BinaryAST, bhurawuza rinogona kuenderera mberi kuenda kudanho rekubatanidza, nekupfuura nekupatsanura JavaScript source code.

Zvekuyedza yakagadzirirwa referensi yekushandisa inopihwa pasi peMIT rezinesi. Node.js zvikamu zvinoshandiswa pakushambadzira, uye iyo kodhi ye optimization uye AST chizvarwa yakanyorwa muRust. Browser-divi rutsigiro
BinaryAST yatovepo mukati ungano yousiku Firefox. Iyo encoder muBinaryAST inogona kushandiswa zvese pamagumo saiti yekushandisa level uye yekurongedza zvinyorwa zvekunze masaiti padivi re proxy kana zvemukati zvekutumira network. Parizvino, maitiro ekumira kweBinaryAST neboka rekushanda akatotanga ECMA TC39, mushure meizvozvo iyo fomati inozokwanisa kugarisana nezviripo zvekudzvanya nzira, senge gzip uye brotli.

Cloudflare, Mozilla uye Facebook vanogadzira BinaryAST kuti ikurumidze kurodha JavaScript

Cloudflare, Mozilla uye Facebook vanogadzira BinaryAST kuti ikurumidze kurodha JavaScript

Paunenge uchigadzira JavaScript, nguva yakakosha yenguva inopedzwa mukurodha nekuparura chikamu chekodhi. Tichifunga kuti vhoriyamu yeJavaScript yakatorwa pane dzakawanda nzvimbo dzakakurumbira iri pedyo ne10 MB (somuenzaniso, yeLinkedIn - 7.2 MB, Facebook - 7.1 MB, Gmail - 3.9 MB), iyo yekutanga kugadziriswa kweJavaScript inounza kunonoka kukuru. Iyo parsing nhanho padivi rebrowser inodzikiswa zvakare nekuda kwekutadza kuvaka zvizere iyo AST panhunzi sezvo kodhi inotakurwa (browser inofanirwa kumirira mabhuraki ekodhi kuti apedze kurodha, senge kupera kwemabasa, kuwana. ruzivo rwakashaikwa kutsanangudza zvinhu zvazvino).

Ivo vari kuyedza kugadzirisa dambudziko racho zvishoma nekugovera kodhi mune yakaderedzwa uye yakamanikidzwa fomu, pamwe nekuchengetedza iyo yakagadzirwa bytecode nebrowser. Pamasaiti emazuva ano, iyo kodhi inogadziridzwa kazhinji, saka caching inogadzirisa zvishoma dambudziko. WebAssembly inogona kunge iri mhinduro, asi inoda kutaipa kwakajeka mukodhi uye haina kunyatsokodzera kukurumidza kugadziridzwa kweJavaScript kodhi iripo.

Imwe sarudzo ndeyekuunza yakagadzirira-yakagadzirwa yakaunganidzwa bytecode pachinzvimbo cheJavaScript zvinyorwa, asi browser injini vanogadzira vanopokana nazvo nekuti yechitatu-bato bytecode inonetsa kuonesa, kugadzirisa kwayo kwakananga kunogona kutungamira kuWebhu stratification, dzimwe njodzi dzekuchengetedza dzinomuka, uye kuvandudzwa kwe inodiwa universal bytecode fomati.

BinaryAST inokutendera kuti ukwane mune yako yazvino kodhi yekuvandudza uye yekuendesa modhi pasina kugadzira bytecode nyowani kana kushandura mutauro weJavaScript. Saizi yedata muBinaryAST fomati inofananidzwa neyakaomeswa minified JavaScript kodhi, uye kumhanya kwekugadzirisa nekubvisa iyo source text parsing phase inowedzera zvinooneka. Uye zvakare, iyo fomati inobvumira kuunganidzwa kune bytecode sezvo BinaryAST yakarodha, pasina kumirira kuti data rese ripere. Uye zvakare, kupatsanura padivi pesevha inobvumidza iwe kusabvisa zvisina kushandiswa kodhi uye isina kufanira kodhi kubva yakadzoserwa BinaryAST inomiririra, iyo, kana ichitarisa padivi rebrowser, inopedza nguva zvese parsing uye kuendesa zvisina kufanira traffic.

Chinhu cheBinaryAST zvakare kugona kudzoreredza inoverengeka JavaScript iyo isina kunyatsofanana neiyo yekutanga vhezheni, asi yakaenzana semantically uye inosanganisira iwo akafanana mazita ezvinosiyana uye mabasa (BinaryAST inochengetedza mazita, asi haichengetedze ruzivo nezvezvinzvimbo mu kodhi, fomati uye makomendi). Rumwe rutivi rwemari ndiko kubuda kwevatsva vekurwisa, asi maererano nevagadziri, idiki uye inodzoreka pane kushandisa dzimwe nzira, sekugovera bytecode.

Miedzo yefacebook.com kodhi yakaratidza kuti kupatsanura JavaScript kunodya 10-15% yeCPU zviwanikwa uye parsing inotora nguva yakawanda kupfuura kugadzira bytecode uye yekutanga kodhi kodhi yeJIT. MuSpiderMonkey injini, nguva yekuvaka zvachose AST inotora 500-800 ms, uye kushandiswa kweBinaryAST kwakaderedza nhamba iyi ne70-90%.
Kazhinji, kune akawanda ewebhu fireworks, kana uchishandisa BinaryAST, JavaScript parsing nguva inoderedzwa ne3-10% mumodhi pasina optimization uye ne90-97% kana maitiro ekuregeredza asina kushandiswa anogoneswa.
Paunenge uchimhanyisa 1.2 MB JavaScript test set, uchishandisa BinaryAST yakabvumira nguva yekutanga kuti ikurumidze kubva pa338 kusvika 314 ms padesktop system (Intel i7) uye kubva 2019 kusvika 1455 ms panharembozha (HTC One M8).

Source: opennet.ru

Voeg