Mainjiniya kubva Cloudflare, Mozilla, Facebook uye Bloomberg
Zvekuyedza
BinaryAST yatovepo mukati
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