neprihlásený Utorok, 22. októbra 2024, dnes má meniny Sergej
Firefox mnohonásobne zrýchlil spúšťanie WebAssembly kódu

Značky: Firefox

DSL.sk, 18.10.2024


Spoločnosť Mozilla dosiahla vo svojom webovom prehliadači Firefox mnohonásobné zrýchlenie počiatočného spúšťania komplikovanejšieho kódu vo WebAssembly, čo výrazne zlepšuje používanie webových aplikácií s takýmto kódom.

Mozilla o zlepšení informuje v tomto popise.

WebAssembly respektíve Wasm je portovateľný binárny kód pre písanie programov podporovaný webovými prehliadačmi, ktorého cieľom je umožniť programovať efektívne výkonné webové aplikácie.

Firefox mal doteraz problém s pomalým spustením veľmi veľkých Wasm modulov, keď pri spustení prehliadač dlho vyťažuje CPU a má veľkú spotrebu pamäte. Spoločnosť to zaregistrovala v septembri pri spúšťaní ONNX Runtimu od Microsoftu.

Firefox pre efektívne spúšťanie prekladá WebAssembly kód na natívny strojový kód. Najskôr použije preklad pomocou kompilátora Wasm Baseline, ktorý je rýchly ale nevytvára najkvalitnejší kód. Firefox môže následne začať WebAssembly kód vykonávať, zároveň ho ale skompiluje ešte na výrazne efektívnejší pomocou kompilátora Ion.

Problém bol s touto kompiláciou, ktorá v prípade ONNX zaťažovala CPU približne 5 minút a spotrebovávala viac ako 4 GB pamäte. Príčinou boli neefektívne dátové štruktúry a algoritmy s kvadratickou časovou zložitosťou, čo sa výrazne prejavovalo pri kompilácii veľkých Wasm modulov.

Po optimalizovaní bolo pri veľkom ONNX module dosiahnuté zrýchlenie kompilovania 75-násobne na 3.9 sekundy. Celkovú spotrebu pamäte popis neuvádza, spomína ale ušetrenie minimálne 3 GB.

Optimalizácia samozrejme výrazne zrýchľuje počiatočné spúšťanie aj iných veľkých Wasm modulov, napríklad kompilácia modulu v online deme Adobe Photoshopu zrýchlila zo 4 minút na 14 sekúnd. Zlepšenie neznamená následný rýchlejší beh kódu vo Wasm, znamená iba výrazne menšie zaťaženie CPU pri počiatočnom spúšťaní a vďaka skoršej dostupnosti efektívnejšieho natívneho kódu dosiahnutie vyššieho výkonu Wasm kódu skôr po spustení.

Mozilla podľa popisu pripravuje aj ďalšiu významnú optimalizáciu. V súčasnosti sa pomocou Ion kompilátora kompiluje naraz celý Wasm modul, pričom čakať napríklad 14 sekúnd na efektívne spustenie Adobe Photoshopu je pomerne dlhá doba. Mozilla tak pripravuje kompilovanie Wasm kódu postupne po funkciách.

Ani už uskutočnená optimalizácia zatiaľ nie je súčasťou stabilnej verzie Firefoxu a Mozilla v popise neinformuje, v ktorej verzii respektíve kedy má byť pridaná.


      Zdieľaj na Twitteri



Najnovšie články:

Microsoft Azure na konci mesiaca vypne podporu TLS 1.0 a 1.1
Ukážka z novej série populárneho Star Trek seriálu
Qualcomm predstavil CPU pre smartfóny postavený na novom jadre, je podľa neho výkonnejší ako Apple CPU
Objavené nové najväčšie prvočíslo, prvýkrát pomocou GPU
Oznámený termín nového Star Trek filmu, príde o pár mesiacov
Microsoft sprístupnil virtuálne servery postavené na jeho vlastnom ARM procesore
O2 znovu oznámilo zlepšenie pokrytia 5G
Intel ukázal CPU pre PC vyrobený procesom Intel 18A
Budúci rok má byť na cestách už 85 miliónov elektromobilov
V Česku má byť pozemné DVB-T vysielanie aj po roku 2030


Diskusia:
                               
 

Optimalizácia WebAssembly je fajn. Ale písať cele aplikácie d JS a dávať ich do browsra je ako škrabanie sa cez opačnú stranu hlavy. Pritom stačí písať kvalitné C++/Rust aplikácie.
Odpovedať Známka: 2.7 Hodnotiť:
 

WebAssembly ti pojde aj na mobile cez hociaky WebView ktory to zaobali, C++/Rust aplikacia nie.
Odpovedať Známka: 8.0 Hodnotiť:
 

čo konkrétne si môžem predstaviť pod zložitou webovou aplikáciou napísanou vo Wasm, ktorú je potrebné obsluhovať cez mobil?
Odpovedať Známka: 5.0 Hodnotiť:
 

A čo konkrétne si môžeš predstaviť? Postni link na notársky overený zoznam, aby bolo garantované, že sa dá zakrúžkovať priekazne zrozumiteľná odpoveď.
Odpovedať Známka: 0.0 Hodnotiť:
 

Nemusi to byt nic zlozite, WASM nema so zlozitostou nic. Vela veci, ktore sa ale kompiluju do JS maju ako jeden z targetov aj WASM, preto je dobre ze to vylepsuju.
Odpovedať Hodnotiť:
 

ak to teda nie je zložité, prečo teda nie je optimálnejšie riešenie napísať to rovno v čistom JS?
Odpovedať Hodnotiť:
 

To co su za prijebane otazky ? To sa mam zakazdym obmedzovat len na JS ? Naco hento, naco tamto… vsak je dobre ze svet ponuka tolko moznosti.
Odpovedať Známka: 5.0 Hodnotiť:
 

ďakujem za objasnenie, už to chápem, je to obmedzovanie sa na tvojej úrovni, tzn. chceš písať jednoduchšie aj napriek tomu že vo výsledku sa ten tvoj kód aj tak musí skompilovať do toho "obmedzeného JS". Môj pohľad je taký, že ak niečo píšem priamo v čistom JS, je to optimalizovanejšie ako nejaký prekompilovaný kód z iného jazyka
Odpovedať Hodnotiť:
 

Tak pis rovno v ASM, lepsie to bude optimalizovane.
Odpovedať Známka: 10.0 Hodnotiť:
 

V strojáku.
Odpovedať Hodnotiť:
 

A komu to treba?
Odpovedať Známka: 3.3 Hodnotiť:
 

toto je presne nieco co mam vypunte a zapnut to neplanujem.
wasm smrdi este viac nez js.
Odpovedať Hodnotiť:
 

Ta uz je mrtva?
Odpovedať Známka: 0.0 Hodnotiť:
 

Všichni jsou mrtví, Dejve.
Odpovedať Známka: 5.0 Hodnotiť:
 

knock, knock..
Odpovedať Hodnotiť:
 

Lyska!
lystiycky!
Odpovedať Známka: -5.0 Hodnotiť:
 

V Borovciach je rozbita cesta bo tam robia kanaly.
Odpovedať Známka: -3.3 Hodnotiť:
 

Pripomenulo mi to filtracnu funkciu nad par GB textovym suborom, ktory kolega senior programator natukal a trvala 4 hodiny... co ma dostalo do kolien a ja ako admin som teda spravil novy skript, ktory to iste urobil za cca 10 sekund, t.j. limitovane to bolo hlavne rychlostou diskov.
Cely rozdiel bol, ze moje riesenie pouzivalo viacnasobne parsovanie nad celou mnozinou a jeho vykonavalo filtrovanie celoskupinovo nad davkami.
Odpovedať Známka: -3.3 Hodnotiť:
 

Mne to pripomenulo, ze ak niekto napise ze jeho algoritmus je 1500x rychlejsi a popisuje ho slovickom viacnasobne, ze asi zle vidim. Ak ale senior urobil svoj kus kodu vo vba a vlozil tam deay, dal to mlademu urobit znovu v pascale, urcite mu zlepsil sebavedomie a mlady to nevzdal do mesiaca.
Odpovedať Známka: 10.0 Hodnotiť:

Pridať komentár