Programmēšana

Mozilla Firefox uzlabo JavaScript veiktspēju

Firefox lietotāji var sagaidīt uzlabotu JavaScript veiktspēju pārlūkprogrammā Firefox 83, pēc noklusējuma iespējojot SpiderMonkey JavaScript dzinēja Warp atjauninājumu.

Saukta arī par WarpBuilder, Warp uzlabo atsaucību un atmiņas lietošanu un paātrina lapu ielādi, veicot izmaiņas JiT (tieši laikā) kompilatoros. JiT optimizācija tiek mainīta, balstoties tikai uz CacheIR vienkāršā lineārā baitu koda formātu, īpaši uz CacheIR datiem, kurus apkopo bāzes līmeņi. Jaunā arhitektūra, kas tiek izmantota pārlūkprogrammā, tiek raksturota arī kā uzturamāka un papildu SpiderMonkey uzlabojumu apguve.

Firefox 83 tika publicēts beta versijā 20. oktobrī, un to paredzēts izlaist 17. novembrī. Ir pierādīts, ka Warp ir ātrāks par Ion, SpiderMonkey iepriekšējo optimizējošo JiT, tostarp Google Docs ielādes laika uzlabojums par 20 procentiem. Uzlabojumi ir parādījušies arī citās vietnēs, kas aizņem daudz JavaScript, piemēram, Netflix un Reddit.

Warp balstīšana uz CacheIR ļāva noņemt kodu visā motorā, kas bija vajadzīgs, lai izsekotu IonBuilder izmantotos globālā tipa secinājumu datus, kā rezultātā palielinājās ātrums. Lai gan IonBuilder un WarpBuilder ražo Ion MIR, starpposma attēlojumu, ko izmanto JiT optimizējošā aizmugure, IonBuilder bija daudz sarežģītu kodu, kas WarpBuilder nav vajadzīgs. Warp arī var paveikt vairāk darbu ārpus pavediena, un tam ir nepieciešams mazāk pārkompilāciju. Plāni prasa turpināt Warp optimizāciju, kas dažos sintētiskajos etalonos pašlaik ir lēnāka nekā jonu.

Warp ir aizstājis IonMonkey JiT priekšējo daļu - MIR celtniecības posmu. Plāni prasa noņemt veco kodu un arhitektūru, kas, iespējams, notiks Firefox 85. Tā rezultātā tiek gaidīti papildu veiktspējas un atmiņas izmantošanas uzlabojumi. Mozilla arī turpinās pakāpeniski optimizēt IonMonkey JiT aizmuguri, jo Mozilla uzskata, ka JavaScript ietilpīgajām slodzēm vēl ir ko uzlabot. Izstrādē ir arī rīks tīmekļa izstrādātājiem un Mozilla, lai izpētītu CacheIR datus JavaScript funkcijai.

$config[zx-auto] not found$config[zx-overlay] not found