Cloudflare, Mozilla ati Facebook ṣe agbekalẹ BinaryAST lati ṣe ikojọpọ JavaScript ni iyara

Awọn onimọ-ẹrọ lati Cloudflare, Mozilla, Facebook ati Bloomberg ti a nṣe titun kika Alakomeji lati yara ifijiṣẹ ati sisẹ koodu JavaScript nigba ṣiṣi awọn aaye ni ẹrọ aṣawakiri kan. BinaryAST gbe ipele itọka lọ si ẹgbẹ olupin ati pese igi sintasi ti a ti ipilẹṣẹ tẹlẹ (AST). Nigbati o ba gba BinaryAST, ẹrọ aṣawakiri le tẹsiwaju lẹsẹkẹsẹ si ipele akopo, ni ikọja sisọ koodu orisun JavaScript.

Fun idanwo pese sile imuse itọkasi ti a pese labẹ iwe-aṣẹ MIT. Node.js irinše ti wa ni lilo fun a itupalẹ, ati awọn koodu fun ti o dara ju ati AST iran ti kọ ninu ipata. Atilẹyin ẹgbẹ aṣawakiri
BinaryAST ti wa tẹlẹ ninu nightly kọ Firefox. Awọn kooduopo ni BinaryAST le ṣee lo mejeeji ni ipele ipari aaye irinṣẹ ati fun awọn iwe afọwọkọ apoti ti awọn aaye ita ni ẹgbẹ aṣoju tabi nẹtiwọọki ifijiṣẹ akoonu. Lọwọlọwọ, ilana ti iṣedede ti BinaryAST nipasẹ ẹgbẹ iṣẹ ti bẹrẹ tẹlẹ ECMA TC39, lẹhin eyi ọna kika naa yoo ni anfani lati gbepọ pẹlu awọn ọna titẹ akoonu ti o wa tẹlẹ, gẹgẹbi gzip ati brotli.

Cloudflare, Mozilla ati Facebook ṣe agbekalẹ BinaryAST lati ṣe ikojọpọ JavaScript ni iyara

Cloudflare, Mozilla ati Facebook ṣe agbekalẹ BinaryAST lati ṣe ikojọpọ JavaScript ni iyara

Nigbati o ba n ṣiṣẹ JavaScript, iye akoko ti o pọju ni a lo ninu ikojọpọ ati ipinpinpin ti koodu naa. Ṣiyesi pe iwọn didun JavaScript ti o gbasilẹ lori ọpọlọpọ awọn aaye olokiki ti sunmọ 10 MB (fun apẹẹrẹ, fun LinkedIn - 7.2 MB, Facebook - 7.1 MB, Gmail - 3.9 MB), sisẹ akọkọ ti JavaScript ṣafihan idaduro nla kan. Ipele itọka lori ẹgbẹ ẹrọ aṣawakiri tun fa fifalẹ nitori ailagbara lati kọ AST ni kikun lori fo bi koodu ti kojọpọ ( ẹrọ aṣawakiri ni lati duro fun awọn bulọọki koodu lati pari ikojọpọ, gẹgẹbi ipari awọn iṣẹ, lati gba. alaye ti o padanu lati sọ awọn eroja ti o wa lọwọlọwọ).

Wọn n gbiyanju lati yanju iṣoro naa ni apakan nipasẹ pinpin koodu naa ni fọọmu ti o dinku ati fisinuirindigbindigbin, bakanna nipa fifipamọ bytecode ti ipilẹṣẹ nipasẹ ẹrọ aṣawakiri. Lori awọn aaye ode oni, koodu ti ni imudojuiwọn ni igbagbogbo, nitorinaa caching nikan ni apakan kan yanju iṣoro naa. WebAssembly le jẹ ojutu kan, ṣugbọn o nilo titẹ ni ṣoki ni koodu ati pe ko baamu daradara fun ṣiṣe titẹ sisẹ koodu JavaScript ti o wa tẹlẹ.

Aṣayan miiran ni lati fi awọn iwe afọwọkọ JavaScript ti o ṣetan ṣe dipo awọn iwe afọwọkọ JavaScript, ṣugbọn awọn olupilẹṣẹ ẹrọ ẹrọ aṣawakiri wa ni ilodi si nitori bytecode ẹni-kẹta nira lati rii daju, sisẹ taara rẹ le ja si isọdi wẹẹbu, awọn eewu aabo afikun dide, ati idagbasoke ti ọna kika bytecode agbaye ni a nilo.

BinaryAST gba ọ laaye lati baamu si idagbasoke koodu lọwọlọwọ rẹ ati awoṣe ifijiṣẹ laisi ṣiṣẹda bytecode tuntun tabi yi ede JavaScript pada. Iwọn data ni ọna kika BinaryAST jẹ afiwera si koodu JavaScript ti o ni fisinuirindigbindigbin, ati iyara sisẹ nipasẹ yiyọkuro apakan ọrọ sisọ ọrọ orisun pọ si ni akiyesi. Ni afikun, ọna kika ngbanilaaye akojọpọ si bytecode bi BinaryAST ti kojọpọ, laisi iduro fun gbogbo data lati pari. Ni afikun, sisọ lori ẹgbẹ olupin n gba ọ laaye lati yọkuro awọn iṣẹ ti a ko lo ati koodu ti ko wulo lati aṣoju BinaryAST ti o pada, eyiti, nigbati o ba n ṣalaye ni ẹgbẹ aṣawakiri, npadanu akoko mejeeji sisọ ati gbigbe awọn ijabọ ti ko wulo.

Ẹya kan ti BinaryAST tun jẹ agbara lati mu pada JavaScript kika ti kii ṣe deede kanna bi ẹya atilẹba, ṣugbọn o jẹ deede deede ati pẹlu awọn orukọ kanna ti awọn oniyipada ati awọn iṣẹ (BinaryAST fi awọn orukọ pamọ, ṣugbọn ko ṣe ifipamọ alaye nipa awọn ipo ninu koodu, kika ati comments). Apa keji ti owo naa ni ifarahan ti awọn olutọpa ikọlu tuntun, ṣugbọn ni ibamu si awọn olupilẹṣẹ, wọn kere pupọ ati ni iṣakoso diẹ sii ju nigba lilo awọn omiiran, gẹgẹbi pinpin bytecode.

Awọn idanwo ti koodu facebook.com fihan pe sisọ JavaScript n gba 10-15% ti awọn orisun Sipiyu ati sisọtọ gba akoko diẹ sii ju ti ipilẹṣẹ bytecode ati ipilẹṣẹ koodu ibẹrẹ fun JIT. Ninu ẹrọ SpiderMonkey, akoko lati kọ AST patapata gba 500-800 ms, ati lilo BinaryAST ti dinku nọmba yii nipasẹ 70-90%.
Ni gbogbogbo, fun ọpọlọpọ awọn iṣẹ ina wẹẹbu, nigba lilo BinaryAST, akoko sisọ JavaScript dinku nipasẹ 3-10% ni ipo laisi iṣapeye ati nipasẹ 90-97% nigbati ipo ti kọju awọn iṣẹ ti ko lo ṣiṣẹ ṣiṣẹ.
Nigbati o ba n ṣiṣẹ eto idanwo JavaScript 1.2 MB, lilo BinaryAST gba akoko ibẹrẹ laaye lati yara lati 338 si 314 ms lori ẹrọ tabili tabili (Intel i7) ati lati ọdun 2019 si 1455 ms lori ẹrọ alagbeka kan (HTC Ọkan M8).

orisun: opennet.ru

Fi ọrọìwòye kun