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í

Sdílet