Chrome má ďábelsky rychlý Javascript – na jak dlouho?

Google Chrome je prý neskutečně rychlý a expresně si poradí s Javascriptem. Nainstaloval jsem tedy všechny známe prohlížeče a spustil oblíbený a časem ověřený test SunSpider.

Pakliže se řekne webový prohlížeč, téměř každého nejprve napadne otázka, zdali bude zobrazovat správně webové stránky. S rostoucí penetrací AJAXu na webu se však do popředí dostává i problematika rychlosti zpracovávání Javascriptu. Ostatně není se čemu divit, komplexní webová aplikace postavená na AJAXu se pod tíhou stovek až tisíců řádků javascriptového kódu doslova prohýbá a jen rychlé připojení k internetu vám v takovém případě na starším počítači nebo průměrném notebooku rozhodně nebude stačit.

V čem testovat Javascript

Rychlost zpracovávání klientských skriptů na stránce je dnes tedy jedním z nejdůležitějších výkonnostních parametrů a do středu zájmu se vedle mytologického (leč poměrně relativního) ACID testu dostávají i nejrůznější (stejně realtivní) javascriptové benchmarky.

K těm nejznámějším testům dnes patří SunSpider od vývojářů renderovacího jádra WebKit (Safari, Chrome, iPhone, Android, …), relativně mladý projekt Dromaeo z dílny Mozilly a nejjednodušší V8 Benchmark Suite od Googlu, který posloužil pro ladění stejnojmenného javascriptového motoru prohlížeče Chrome.

SunSpider testuje základní schopnosti JavaScriptu od jednoduchých testů po složité a komplexní matematické výpočty. Elementární testy se přitom několikanásobně opakují a pak se vypočítá jejich průměrná délka trvání a odchylka. Podobně pracuje i V8 Benchmark Suite, je ovšem mnohem jednodušší. Nejkomplexnějším testem současnosti je pravděpodobně test Dromaeo, který zkoumá i výkon při práci s oblíbenými a často používanými javascriptovými knihovnami jQuery, Prototype aj.

Oblíbené online testy Javascriptu

Testujeme mainstreamové prohlížeče v SunSpideru

Dromaeo je tedy asi nejblíže k simulování skutečné práce se složitým webem, na druhou stranu s ním zřejmě mají problém některé prohlížeče. Safari 3.1.2 dokázalo během jediného testu alokovat až 600 MB operační paměti, Internet Explorer 8 Beta 2 zase pro změnu po několika minutách naprostého vytěžování procesoru ohlásil chybu. Nakonec jsem se tedy rozhodl pro časem ověřenou cestu a otestoval prohlížeče Chrome, IE7, IE8b2, Opera, Safari a Firefox v SunSpideru.

sunspider1.png  sunspider2.png
Oko estéta sice Sluneční Pavouk nenadchne, výsledky jsou ale zajímavé

SunSpider vrací jako výsledek kompletní seznam dílčích testů s průměrným časem každého z nich a odchylkou během testování. Nejpřehlednější je ale součet těchto časů, který jsem posléze srovnal s ostatními prohlížeči. Abych zajistil co největší objektivnost testu, použil jsem čisté instalace prohlížečů bez jakýchkoliv uživatelských dat a test jsem v průběhu dne čtyřikrát zopakoval. Odchylka ve výsledném času nepřekročila řádově několik procent.

SunSpider měří čas zpracovávání, který se odvíjí nejen od kvality samotného prohlížeče, ale samozřejmě i od výkonu počítače. Prakticky tedy nemá smysl uvádět absolutní hodnoty, ty jsou totiž pokaždé jiné a poměrně drasticky se liší, pakliže test provedete jednou na počítači s 3GHz Intelem a podruhé na starším Celeronu. Zajímaly mě tedy pouze relativní hodnoty, tedy o kolik byl každý z prohlížečů rychlejší vzhledem k referenčnímu – nejpomalejšímu – prohlížeči.

A vítězem se stává…

Asi nebude překvapením, že se tímto referenčním prohlížečem stal Internet Explorer 7, potěšila ale druhá betaverze Internet Exploreru 8. Sice se podle všech předpokladů umístila na předposledním místě, test SunSpider ale zvládla čtyřikrát rychleji než její současný předchůdce.

sunspider_vysledky.png
Na ose Y najdete násobky rychlosti oproti referenčnímu Internet Exploreru 7
Jedná si nicméně o test, Chrome v reálném nasazení skutečně není 18x rychlejší

Na další příčce se umístila Opera 9.52 následovaná prohlížečem Safari 3.1.2, který zpracoval test sedmkrát rychleji. To ostatně odpovídá i měření Applu, který na svých stránkách uvádí šestinásobnou rychlost. Zlatá medaile patřila až do konce léta Firefoxu, po uvolnění prohlížeče Chrome k veřejnému testování se ale musel pohrobek Mozilly spokojit se stříbrem a desetinásobnou rychlostí. První místo tedy podle mého testu patří prohlížeči Google Chrome, který se s benchmarkem SunSpider vypořádal 18x rychleji než Internet Explorer 7.

V grafu nicméně najdete i dva hypotetické výpočty pro budoucí prohlížeče Safari 4 a Firefox 3.1. Pokud bude Firefox 3.1 skutečně téměř dvakrát rychlejší než současná verze, měl by překonat i současný Chrome. Safari 4 by pak mělo setrvat na bronzové příčce. Podobné spekulace jsou však poměrně předčasné, odhadované rychlosti totiž vychází z testovacích verzí a předpokladů na stránkách výrobců a po novém roce se ostatně může zrychlit i samotný prohlížeč od Googlu.

SquirrelFish a TraceMonkey

A proč se vlastně Firefox a Safari tak výrazně zrychlí? Na „vině“ budou nové systémy pro zpracovávání Javascriptu. Safari 4 získá mnohem efektivnější motor SquirrelFish, Mozilla pro změnu podstatně vylepší svůj systém SpiderMonkey o technologii „Trace Trees“ a výsledkem bude nový motor TraceMonkey s podporou JIT kompilace. Skript se tedy při zpracování přeloží do nativního kódu, díky čemuž by se měl později výkonnostně srovnat s běžným strojovým kódem. JIT kompilace totiž může být výkonnější než běžný „EXE program“, protože při překladu může brát v úvahu konkrétní procesor s podporou nejrůznějších multimediálních instrukcí. Do budoucna by tak měl umět TraceMonkey třeba SSE instrukce.

Podívejte se, co dokáže JIT kompilace s technologií Trace Trees na příkladu webového grafického editoru

TraceMonkey si můžete vyzkoušet už v současných nočních sestaveních Firefoxu 3.1, je třeba jej ale povolit v registru about:config – konkretně pak v klíčích javascript.options.jit.chrome a javascript.options.jit.content. I v takovém případě se nicméně jedná o testovací verzi a výkon se může od finálního uvedení Firefoxu 3.1 lišit.

Nakonec ještě jedna rada. Prakticky všichni výrobci prohlížečů si tak trošku pohrávají se slovy a na základě výsledků (zpravidla SunSpideru) na svých stránkách píší, že jejich Javascript engine bude desetkrát rychlejší než ten, který najdete v Internet Exploreru. Benchmark a realita jsou však dvě zcela odlišné nádoby, takové webové prostředí Gmailu nebo webového alba Picasy se vám v Google Chromu skutečně nezobrazí 18x rychleji než v IE7.

Diskuze (13) Další článek: Nejnovější Firefox 3.0.2 má problémy s uloženými hesly

Témata článku: , , , , , , , , , , , , , , , , , , , , , , , ,