JavaScript ve Firefoxu 3.1 trhne všechny rekordy

8. 9. 2008 18:35 (aktualizováno) | Martin Hassman

Jestli se za poslední roky něco v prohlížečích zlepšilo nade všechna očekávání, tak je to rychlost JavaScriptu. A tím myslím ve všech prohlížečích. I když ačkoliv se jak Opera tak Internet Explorer (ve svém osmičkové verzi) rovněž dost snaží, k největšímu souboji dochází zdá se mezi WebKitem (Safari) a Geckem (Firefoxem). Na jaře jsem se ptal, jak dlouho tenhle trend prohlížečů vydrží.

Vydržel. Ačkoliv trojková verze Firefoxu i trojjedničková verze Safari přinesla zrychlení, boj neskončil.

WebKit podává

Vývojáři Webkitu začátkem léta zabodovali, když oznámili svůj nový JavaScriptový interpret SquirrelFish, který díky řadě optimalizací procházení syntaktického stromu (lépe a přesněji vysvětlují vývojáři) dosáhnul dalšího zrychlení (v průměru 1,6× viz graf).

Graf rychlost JavaScriptu ve Webkitu

Počet proběhlých testů SunSpider za minutu (vyšší číslo = lepší)

Gecko smečuje

Během léta bylo zdánlivě ticho po pěšině. Ovšem tento týden zabodoval pro změnu druhý tým. Do vývojových verzí Firefoxu 3.1 byl zahrnut projekt TraceMonkey. Ten do JavaScriptového enginu SpiderMonkey přidává JIT (just-in-time) code compilation (lepší vysvětlení a ještě lepší vysvětlení), se kterou je JavaScript v Gecku oproti předchozím verzím 1.8× až 22× rychlejší (podle druhu testu) a daří se mu předehnat i SquirellFish. Projekt není dosud dokončen, ve výsledku bude zrychlení ještě větší.

John Resig dokonce srovnává rychlost JavaScriptu s céčkem: „With this improvement it's leap-frogged any sort of traditional and has gone head-to-head with computationally-powerful languages like C.“ To je skutečně odvážné tvrzení (zdá se, že porovnávali s neoptimalizovaným výstupem gcc), počkám si zvědavě na dokončení projektu, zda bude výsledek opravdu srovnatelný.

V práci na Tracemonkey pomohl i kód od Adobe a výsledek se zpětně nejspíš dostane i do dalších verzí Flashe (takže i jeho ActionScript bude rychlejší). Práce na Tracemonkey začala před asi 60 dny (tj. pár týdnů po té, co WebKit  oznámil SquirellFish), nicméně JIT bylo avizováno již asi před dvěma lety jako součást Mozilla 2.

Zajímalo by mne, zda už teď pro změnu vývojáři WebKitu přemýšlí, zda a jak tenhle náskok vyrovnají. Nic bych na to nedal, když by nám ještě před koncem roku připravili nějaké další překvapení. Držím jim palce. Zrychlení JavaScriptu v prohlížečích umožní, aby některé dnes pomalé hříčky byly časem vhodné i do produkčního prostředí. A také idea Mozilla 2, ve které mnohem větší část kódu prohlížeče bude napsána přímo v JavaScriptu, se stává reálnější.

A já se opět ptám. Kde se to zastaví, kde se to zastaví?

Další čtení

  • 24. 8. 2008 11:09

    David Majda (neregistrovaný)

    Nejlepší na tom všem je, že všechny tyhle optimalizace JavaScriptu v prohlížečích posouvají state-of-art v interpretaci dynamických skriptovacích jazyků obecně. Například tacing trees, použité ve Firefoxu, jsou (pokd vím) úplně nová technika, kterou půjde použít i pro další jazyky jako Python nebo Ruby. Zdá se, že teprve prohlížeče a složité webové aplikace byly dostatečnou motivací pro další výzkum v téhle oblasti.

    Hezké na tom je taky to, že to celé vzniká ve spolupráci s univerzitou - ukázkový příklad spolupráce kooperace komerční a akademické sféry.

    "Kde se to zastaví, kde se to zastaví?" - no přece až bude JS rychlý jako céčko :-)

  • 24. 8. 2008 20:44

    ivan (neregistrovaný)

    Hmm, skoda jen, ze ackoliv je spidermonkey vicevlaknovej interpret JS, tak je do mozilly naroubovan jak single-threaded. Tzn. jedno vlakno s jednou frontou javascriptovych volani, ktere je treba obslouzit. Krome security kontextu se nikde nerozlisuje, jestli je vykonavany JS kod soucasti XULu, nebo jestli jde o kod z nejake HTML stranky. A tak se klidne muze stat, ze se cela mozilla zastavi(zasekne), protoze jedna zalozka obsahuje JS kod, ktery sam o sobe neni optimalni. Podle me mozilla ani nerozlisuje ktery JS kod smi naalokovat kolik pameti.

  • 30. 8. 2008 20:44

    Martin Hassman (neregistrovaný)

    Inkvizitor: I těm více jádrům u JavaScriptu trochu svítá, jakmile se začne používat http://html456.blogspot.com/2008/08/na-web-prijde-javascript-s-vice-vlakny.html

  • 30. 8. 2008 20:33

    Inkvizitor (neregistrovaný)

    To je dobrá zpráva a to i pro ostatní dynamické jazyky, jak poznamenává David Majda. Bohužel ale s nástupem vícejádrových procesorů začne být čím dál důležitější podpora konkurenčního zpracování. Problém Firefoxu popsal Ivan, já bych chtěl dodat, že například pro CPython (a u standardní implementace Ruby je to, myslím podobné) začíná být velmi omezující tzv. global interpreter lock, který omezuje škálovatelnost výpočtu ve více vláknech. A to se týká i jiných jazyků s garbage collectorem, jako je například OCaml. Doufejme, že i tohle časem vývojáři vyřeší.

  • 31. 8. 2008 3:58

    deda.jabko (neregistrovaný)

    inkvizitor: garbage collector, kdyz ma podporu pro paralelni prostredi, coz dneska uz neni zadna veda, je v tomto ohledu naprosto podruzna vec. vetsi tezkosti delaji operace se side-effecty (konkurencni pristup k pameti, I/O) a s tema se vyporadat to uz neni takova sranda...

Přidávat nové názory je zakázáno.

Vitalia.cz: Bio vejce nepoznají ani veterináři

Bio vejce nepoznají ani veterináři

120na80.cz: I tuto vodu můžete pít

I tuto vodu můžete pít

Podnikatel.cz: Selhala pokladna k EET. Kdo zaplatí pokutu?

Selhala pokladna k EET. Kdo zaplatí pokutu?

Vitalia.cz: Signál roztroušené sklerózy: brnění končetin

Signál roztroušené sklerózy: brnění končetin

Lupa.cz: Pokémon GO není jediná rozšířená realita. Co dál?

Pokémon GO není jediná rozšířená realita. Co dál?

Lupa.cz: Největší pitominy s logem “nyní smart a připojené”

Největší pitominy s logem “nyní smart a připojené”

DigiZone.cz: Sázka na e-sporty stanici Prima vychází

Sázka na e-sporty stanici Prima vychází

Měšec.cz: Kurzy platebních karet: vyplatí se platit? (TEST)

Kurzy platebních karet: vyplatí se platit? (TEST)

Měšec.cz: Banky umí platby na kartu, jen to neříkají

Banky umí platby na kartu, jen to neříkají

Podnikatel.cz: Prodej na Alibabě? Malí hráči utřou nos

Prodej na Alibabě? Malí hráči utřou nos

Vitalia.cz: Sobotní masakr žrádla, chlastu a zábavy

Sobotní masakr žrádla, chlastu a zábavy

Vitalia.cz: Taky je nosíte? Barefoot není pro každého

Taky je nosíte? Barefoot není pro každého

DigiZone.cz: Test Noxon A560+: kvalitka do vaší věže

Test Noxon A560+: kvalitka do vaší věže

DigiZone.cz: Samsung uvolnil nástroj pro Tizen

Samsung uvolnil nástroj pro Tizen

Měšec.cz: Udali ho na nelegální software a přišla Policie

Udali ho na nelegální software a přišla Policie

Podnikatel.cz: Za červen to zabalila více jak stovka firem

Za červen to zabalila více jak stovka firem

Měšec.cz: Co s reklamací, když e-shop krachuje?

Co s reklamací, když e-shop krachuje?

DigiZone.cz: Sat novinky: Skylink skončil s kanály ČT

Sat novinky: Skylink skončil s kanály ČT

Vitalia.cz: Nejdůležitější změny v potravinářské novele

Nejdůležitější změny v potravinářské novele

Měšec.cz: Se stavebkem k soudu už (většinou) nemusíte

Se stavebkem k soudu už (většinou) nemusíte