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: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ší.

  • 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

  • 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.

Podnikatel.cz: Youtuber? Za 15 tisíc dělat nebude

Youtuber? Za 15 tisíc dělat nebude

Podnikatel.cz: Kauza z Vinohrad pokračuje. Policie se omlouvá

Kauza z Vinohrad pokračuje. Policie se omlouvá

Měšec.cz: Platíme NFC mobilem. Konečně to funguje!

Platíme NFC mobilem. Konečně to funguje!

Root.cz: Tor možná 1. září zažije stávku

Tor možná 1. září zažije stávku

Měšec.cz: Investiční pasti. Děláte to, co ostatní, ale proděláváte

Investiční pasti. Děláte to, co ostatní, ale proděláváte

120na80.cz: Kam umístit silikony?

Kam umístit silikony?

Podnikatel.cz: OSA zdraží, ale taky přidá nový poplatek

OSA zdraží, ale taky přidá nový poplatek

Vitalia.cz: Za její cukrovkou stojí rodiče

Za její cukrovkou stojí rodiče

Měšec.cz: Test: Výběry z bankomatů v cizině a kurzy

Test: Výběry z bankomatů v cizině a kurzy

Vitalia.cz: Galerie: Strouhanka ze starých rohlíků? Kdepak

Galerie: Strouhanka ze starých rohlíků? Kdepak

Měšec.cz: Do ostravské MHD bez jízdenky. Stačí karta

Do ostravské MHD bez jízdenky. Stačí karta

DigiZone.cz: Jetelín končí. Prima ho vyřadila

Jetelín končí. Prima ho vyřadila

Vitalia.cz: 9 potravin, které nesmí chybět v jídelníčku těhotné

9 potravin, které nesmí chybět v jídelníčku těhotné

Vitalia.cz: Je bílý kokos fakt tak úžasný? Ano, je!

Je bílý kokos fakt tak úžasný? Ano, je!

DigiZone.cz: Test TV Samsung UE49K6372SU

Test TV Samsung UE49K6372SU

Měšec.cz: TEST: Vyzkoušeli jsme pražské taxikáře

TEST: Vyzkoušeli jsme pražské taxikáře

Vitalia.cz: Koukám, co bych dobrého snědla, abych zhubla

Koukám, co bych dobrého snědla, abych zhubla

Podnikatel.cz: Pozor na vykuky, imitují služby České pošty

Pozor na vykuky, imitují služby České pošty

Podnikatel.cz: Novela zákoníku práce. Řeší homeworking

Novela zákoníku práce. Řeší homeworking

Lupa.cz: Kdo vykrádá LinkedIn? Zjistit to má soud

Kdo vykrádá LinkedIn? Zjistit to má soud