Firefox 58 bude rychlejší díky lepší paralelizaci WASM
21.1.2018, Milan Šurkala, aktualita
Již brzy se představí nový internetový prohlížeč Mozilla Firefox 58. Ten opět přinese mnohem lepší výkon díky vylepšené paralelizaci WebAssembly. Dokáže kompilovat ještě nestažený kód i provádět dva druhy kompilace.
Nynější verze internetového prohlížeče Mozilla Firefox 57 po letech konečně přinesla mnohem lepší výkon a z často zoufale pomalého prohlížeče se padesátsedmička stala skutečně tím velmi svižným. Mozilla ale nepolevuje a již brzy se dočkáme Firefoxu 58, který by měl výkon posunout opět mnohem dále. Jde především o výrazně vylepšení kompilátorů WebAssemly, které nahrazuje JavaScript a běží rychle díky tomu, že je optimalizováno až na úroveň strojového jazyka (assembleru). Zdlouhavé zpracovávání JavaScriptu vidíte níže. Přesto tu je několik problémů, které i tak způsobují ne až tak vysoký výkon a Firefox 58 je bude řešit.
V dnešním stavu to funguje tak, že se celý soubor nejprve stáhne a uloží do ArrayBufferu, pak se zkompiluje a teprve až poté se tento vysoce optimalizovaný kód spustí a běží velmi rychle. Mozilla však toto vyřeší proudovým zpracováváním dat. Firefox 58 už nebude čekat, až se dotáhne celý soubor s kódem, ale začne jej kompilovat okamžitě poté, co přijde sítí do počítače. I toto samotné stahování je paralelizované. Výsledkem je, že zatímco se WebAssemly kód stahuje, již stáhnuté části se rychle kompilují. Jakmile dojde poslední část, zkompiluje se už jen zbytek a kód je připraven ke spuštění. Není tak třeba čekat na zdlouhavé kompilování.
Mozilla ale používá rychlou kompilaci, která je málo efektivní a výslední kód je tak asi dvakrát pomalejší než ten, který vznikne dnešní zdlouhavou kompilací provedenou po stažení celého souboru. Myslelo se i na tohle. Díky prvnímu urychlení je možné takřka okamžitě po stažení kódu spustit tuto WebAssembly aplikaci, Firefox 58 pak na pozadí zkompiluje tento kód ještě jednou s mnohem lepšími optimalizacemi a pak jej za běhu jen nahradí za rychlejší verzi (hot-swap).
Zdroj: mozilla.org