Peirianwyr o Cloudflare, Mozilla, Facebook a Bloomberg
Ar gyfer profi
Mae BinaryAST eisoes ar gael yn
Wrth brosesu JavaScript, treulir cryn dipyn o amser yng nghyfnod llwytho a dosrannu'r cod. O ystyried bod nifer y JavaScript wedi'i lawrlwytho ar lawer o wefannau poblogaidd yn agos at 10 MB (er enghraifft, ar gyfer LinkedIn - 7.2 MB, Facebook - 7.1 MB, Gmail - 3.9 MB), mae prosesu cychwynnol JavaScript yn cyflwyno oedi sylweddol. Mae'r cam dosrannu ar ochr y porwr hefyd yn cael ei arafu oherwydd anallu i adeiladu'r AST yn llawn ar y hedfan wrth i'r cod gael ei lwytho (rhaid i'r porwr aros i flociau cod gwblhau'r llwytho, megis diwedd swyddogaethau, i'w gael y wybodaeth sydd ar goll i ddosrannu'r elfennau cyfredol).
Maent yn ceisio datrys y broblem yn rhannol trwy ddosbarthu'r cod ar ffurf wedi'i leihau a'i gywasgu, yn ogystal â thrwy gadw'r cod byte a gynhyrchir gan y porwr. Ar safleoedd modern, mae'r cod yn cael ei ddiweddaru'n eithaf aml, felly dim ond yn rhannol y mae caching yn datrys y broblem. Gallai WebAssembly fod yn ateb, ond mae angen teipio'r cod yn benodol ac nid yw'n addas iawn ar gyfer cyflymu'r gwaith o brosesu'r cod JavaScript presennol.
Opsiwn arall yw darparu bytecode parod parod yn lle sgriptiau JavaScript, ond mae datblygwyr peiriannau porwr yn ei erbyn oherwydd ei bod yn anodd gwirio cod beit trydydd parti, gall ei brosesu'n uniongyrchol arwain at haenu Gwe, mae risgiau diogelwch ychwanegol yn codi, a datblygiad o mae angen fformat bytecode cyffredinol.
Mae BinaryAST yn caniatáu ichi ffitio i mewn i'ch model datblygu a chyflwyno cod cyfredol heb greu bytecode newydd na newid yr iaith JavaScript. Mae maint y data yn y fformat BinaryAST yn debyg i god JavaScript miniedig cywasgedig, ac mae'r cyflymder prosesu trwy ddileu'r cyfnod dosrannu testun ffynhonnell yn cynyddu'n amlwg. Yn ogystal, mae'r fformat yn caniatáu casglu beitcode wrth i BinaryAST gael ei lwytho, heb aros i'r holl ddata gael ei gwblhau. Yn ogystal, mae dosrannu ar ochr y gweinydd yn caniatáu ichi eithrio swyddogaethau nas defnyddiwyd a chod diangen o'r gynrychiolaeth BinaryAST a ddychwelwyd, sydd, wrth ddosrannu ar ochr y porwr, yn gwastraffu amser yn dosrannu ac yn trosglwyddo traffig diangen.
Nodwedd o BinaryAST hefyd yw'r gallu i adfer JavaScript darllenadwy nad yw'n union yr un fath â'r fersiwn wreiddiol, ond sy'n cyfateb yn semantig ac sy'n cynnwys yr un enwau newidynnau a swyddogaethau (mae BinaryAST yn arbed enwau, ond nid yw'n arbed gwybodaeth am swyddi yn y cod, fformatio a sylwadau). Ochr arall y darn arian yw ymddangosiad fectorau ymosodiad newydd, ond yn ôl y datblygwyr, maent yn llawer llai ac yn fwy rheoladwy nag wrth ddefnyddio dewisiadau amgen, megis dosbarthiad bytecode.
Dangosodd profion o god facebook.com fod dosrannu JavaScript yn defnyddio 10-15% o adnoddau CPU ac mae dosrannu yn cymryd mwy o amser na chynhyrchu bytecode a chynhyrchu cod cychwynnol ar gyfer JIT. Yn yr injan SpiderMonkey, mae'r amser i adeiladu AST yn llwyr yn cymryd 500-800 ms, ac mae defnyddio BinaryAST wedi lleihau'r ffigur hwn 70-90%.
Yn gyffredinol, ar gyfer y rhan fwyaf o dân gwyllt gwe, wrth ddefnyddio BinaryAST, mae amser dosrannu JavaScript yn cael ei leihau 3-10% yn y modd heb optimeiddio a 90-97% pan fydd y modd anwybyddu swyddogaethau nas defnyddiwyd yn cael ei alluogi.
Wrth redeg set prawf JavaScript 1.2 MB, roedd defnyddio BinaryAST yn caniatáu i'r amser cychwyn gyflymu o 338 i 314 ms ar system bwrdd gwaith (Intel i7) ac o 2019 i 1455 ms ar ddyfais symudol (HTC One M8).
Ffynhonnell: opennet.ru