Bidh Cloudflare, Mozilla agus Facebook a’ leasachadh BinaryAST gus luchdachadh JavaScript a luathachadh

Innleadairean bho Cloudflare, Mozilla, Facebook agus Bloomberg air a mholadh cruth ùr dànaAST gus lìbhrigeadh agus giullachd còd JavaScript a luathachadh nuair a bhios tu a’ fosgladh làraich ann am brobhsair. Bidh BinaryAST a’ gluasad na h-ìre parsaidh gu taobh an fhrithealaiche agus a’ toirt seachad craobh co-chòrdadh eas-chruthach a chaidh a chruthachadh mar-thà (AST). Nuair a gheibh e BinaryAST, faodaidh am brobhsair a dhol air adhart sa bhad chun ìre cruinneachaidh, a ’dol seachad air parsadh còd stòr JavaScript.

Airson deuchainn ullaichte buileachadh iomraidh air a thoirt seachad fo chead MIT. Bithear a’ cleachdadh co-phàirtean Node.js airson parsadh, agus tha an còd airson optimization agus ginealach AST sgrìobhte ann an Rust. Taic brabhsair-taobh
Tha BinaryAST ri fhaighinn mu thràth ann an togalaichean oidhche Firefox. Faodar an encoder ann am BinaryAST a chleachdadh an dà chuid aig ìre innealan na làraich deireannach agus airson pacadh sgriobtaichean de làraich a-muigh air taobh lìonra progsaidh no lìbhrigeadh susbaint. An-dràsta, tha pròiseas cunbhalachadh BinaryAST leis a’ bhuidheann obrach air tòiseachadh mar-thà ECMA TC39, às deidh sin bidh an cruth comasach air a bhith còmhla ris na dòighean teannachaidh susbaint a th’ ann mar-thà, leithid gzip agus brotli.

Bidh Cloudflare, Mozilla agus Facebook a’ leasachadh BinaryAST gus luchdachadh JavaScript a luathachadh

Bidh Cloudflare, Mozilla agus Facebook a’ leasachadh BinaryAST gus luchdachadh JavaScript a luathachadh

Nuair a bhios tu a’ làimhseachadh JavaScript, thèid tòrr ùine a chaitheamh aig ìre luchdachadh is parsaidh a’ chòd. Leis gu bheil an àireamh de JavaScript a chaidh a luchdachadh sìos air mòran làraich mòr-chòrdte faisg air 10 MB (mar eisimpleir, airson LinkedIn - 7.2 MB, Facebook - 7.1 MB, Gmail - 3.9 MB), tha dàil mòr ann an giullachd tùsail JavaScript. Tha an ìre parsaidh air taobh a’ bhrobhsair cuideachd air a lughdachadh air sgàth neo-chomas an AST a thogail gu h-iomlan air an itealan leis gu bheil an còd air a luchdachadh (feumaidh am brobhsair feitheamh gus na blocaichean còd a luchdachadh sìos, leithid deireadh gnìomhan, gus faighinn am fiosrachadh a tha a dhìth gus na h-eileamaidean gnàthach a pharsadh).

Tha iad a’ feuchainn ris an duilgheadas fhuasgladh gu ìre le bhith a’ sgaoileadh a’ chòd ann an cruth nas lugha agus teann, a bharrachd air a bhith a’ tasgadh a’ chòd byte a chaidh a chruthachadh leis a’ bhrobhsair. Air làraichean-lìn an latha an-diugh, bidh an còd air ùrachadh gu math tric, agus mar sin cha bhith tasgadh ach ann am pàirt a ’fuasgladh na duilgheadas. Dh’ fhaodadh WebAssembly a bhith na fhuasgladh, ach tha feum air clò-sgrìobhadh soilleir sa chòd agus chan eil e gu math freagarrach airson a bhith a’ luathachadh giullachd a’ chòd JavaScript a th’ ann mar-thà.

Is e roghainn eile a bhith a’ lìbhrigeadh bytecode deiseil deiseil an àite sgriobtaichean JavaScript, ach tha luchd-leasachaidh einnseanan brobhsair na aghaidh leis gu bheil bytecode treas-phàrtaidh duilich a dhearbhadh, faodaidh a ghiullachd dhìreach leantainn gu sreathadh lìn, thig cunnartan tèarainteachd a bharrachd, agus leasachadh air. tha feum air cruth bytecode uile-choitcheann.

Leigidh BinaryAST leat a dhol a-steach don mhodal leasachaidh còd is lìbhrigidh gnàthach agad gun a bhith a’ cruthachadh bytecode ùr no ag atharrachadh cànan JavaScript. Tha meud an dàta ann an cruth BinaryAST an coimeas ri còd JavaScript teannaichte, agus tha an astar giollachd le bhith a’ cur às don ìre parsaidh teacsa stòr ag àrdachadh gu mòr. A bharrachd air an sin, tha an cruth a’ ceadachadh co-chruinneachadh gu bytecode mar a tha BinaryAST air a luchdachadh, gun a bhith a’ feitheamh ris an dàta gu lèir a chrìochnachadh. A bharrachd air an sin, le bhith a’ parsadh air taobh an fhrithealaiche leigidh sin leat gnìomhan nach deach an cleachdadh agus còd neo-riatanach a thoirmeasg bhon riochdachadh BinaryAST a chaidh a thilleadh, a bhios, nuair a bhios tu a’ parsadh air taobh a’ bhrobhsair, a’ caitheamh ùine an dà chuid a’ parsadh agus a’ sgaoileadh trafaic neo-riatanach.

Is e feart de BinaryAST cuideachd an comas JavaScript a ghabhas leughadh a thoirt air ais nach eil dìreach an aon rud ris an dreach tùsail, ach a tha co-ionann gu semantach agus a ’toirt a-steach na h-aon ainmean de chaochladairean agus ghnìomhan (bidh BinaryAST a’ sàbhaladh ainmean, ach nach eil a ’sàbhaladh fiosrachadh mu shuidheachaidhean anns an còd, cruth agus beachdan). Is e taobh eile a’ bhuinn a bhith a’ nochdadh vectaran ionnsaigh ùra, ach a rèir an luchd-leasachaidh, tha iad tòrr nas lugha agus nas smachdaile na bhith a’ cleachdadh roghainnean eile, leithid cuairteachadh bytecode.

Sheall deuchainnean air còd facebook.com gu bheil parsadh JavaScript a’ caitheamh 10-15% de ghoireasan CPU agus gu bheil parsadh a’ toirt barrachd ùine na bhith a’ gineadh bytecode agus gineadh còd tùsail airson JIT. Anns an einnsean SpiderMonkey, bheir an ùine airson AST a thogail gu tur 500-800 ms, agus tha cleachdadh BinaryAST air am figear seo a lughdachadh 70-90%.
San fharsaingeachd, airson a’ mhòr-chuid de chleasan-teine ​​​​lìn, nuair a bhios tu a’ cleachdadh BinaryAST, tha ùine parsaidh JavaScript air a lughdachadh 3-10% sa mhodh gun optimization agus le 90-97% nuair a tha am modh a bhith a’ seachnadh gnìomhan nach deach a chleachdadh air a chomasachadh.
Nuair a bha thu a’ ruith seata deuchainn JavaScript 1.2 MB, le bhith a’ cleachdadh BinaryAST leig leis an ùine tòiseachaidh luathachadh bho 338 gu 314 ms air siostam deasg (Intel i7) agus bho 2019 gu 1455 ms air inneal gluasadach (HTC One M8).

Source: fosgailtenet.ru

Cuir beachd ann