Zum Hauptinhalt Zur Navigation

Firefox 3.1: TraceMonkey beschleunigt Javascript erheblich

TraceMonkey macht einzelne Javascript-Funktionen 20 mal schneller. Die Optimierungstechnik TraceMonkey soll die Ausführung von Javascript in Firefox drastisch beschleunigen und wird in der kommenden Version des Browsers enthalten sein. In einzelnen Teilbereichen wird JavaScript damit 20- bis 40-mal schneller.
/ Jens Ihlenfeld
116 Kommentare News folgen (öffnet im neuen Fenster)

Javascript ist längst viel mehr als eine Spielerei um Knöpfe auf Websites einzufärben oder Formulareingaben zu prüfen. Auf der einen Seite nimmt sich die ECMA historisch gewachsenen Unzulänglichkeiten von Javascript an, auf der anderen Seite werden die Implementierungen besser und deutlich schneller, so dass sich ganz neue Dinge mit Javascript realisieren lassen.

In die letztgenannte Kategorie fällt auch TraceMonkey(öffnet im neuen Fenster) , ein trace-basierter JIT-Compiler(öffnet im neuen Fenster) der JavaScript beschleunigt. Das Konzept der " trace trees(öffnet im neuen Fenster) " wurde von Andreas Gal und Michael Franz an der Universität Kalifornien entwickelt und zusammen mit einigen Mozilla-Entwicklern im Rahmen des Tamarin-Projekts auf die kommende Firefox-Generation übertragen.

Der Tracing-Mechanismus zeichnet die unterschiedlichen Pfade, die beim Durchlauf einer Schleife auftreten können, während der Laufzeit auf und generiert kompilierten Code, der erneut genutzt werden kann, wenn später ein solcher Pfad wieder erreicht wird. Details erklärt Andreas Gal in einem Blog-Eintrag(öffnet im neuen Fenster) .

Bis diese neue Javascript-Engine zum Einsatz kommt, wird noch einige Zeit vergehen. In den letzten zwei Monaten integrierten daher einige Mozilla-Entwickler zusammen mit Gral und Franz die Technik SpiderMonkey(öffnet im neuen Fenster) , die in Firefox 3 eingesetzte Javascript-Engine.

Seit Freitag, den 22. August 2008, ist der Code in den aktuellen Entwicklungszweig für Firefox 3.1 integriert und erste, von den Entwicklern veröffentlichte Benchmarks, versprechen einen deutlichen Geschwindigkeitszuwachs.

In den von Javascript-Erfinder Brendan Eich veröffentlichten Benchmarks(öffnet im neuen Fenster) war die Vorabversion von Firefox 3.1 mit TraceMonkey, in dem vom Webkit-Team veröffentlichten JavaScript-Benchmark, SunSpider(öffnet im neuen Fenster) rund 1,83mal schneller als Firefox 3.0. In Einzeltests war die aktuelle Entwicklerversion mehr als 30-mal schneller. Allerdings unterscheiden sich die beiden Versionen auch durch weitere Optimierungen.

In einem von Golem.de durchgeführten Vergleich war die aktuelle Entwicklerversion mit aktiviertem TraceMonkey im Schnitt 1,57mal schneller als die gleiche Version mit deaktiviertem TraceMonkey. Teilweise lag die Beschleunigung bei mehr als dem 22fachen. Der Benchmark verwendet allerdings zahlreiche komplexe Stringoperationen, die ohnehin in nativen Code ablaufen und somit durch Änderungen an der Javascript-Engine kaum beschleunigt werden können.

Zudem arbeiten die Mozilla-Entwickler an weiteren Ansätzen um ihre Javascript-Engines zu beschleunigen. Wie sich die Geschwindigkeitszuwächse in realen Applikationen auswirken, zeigte Mike Schroepfer mit einer Browser-basierten Bildbearbeitung(öffnet im neuen Fenster) .

Standardmäßig ist TraceMonkey in den NightlyBuilds(öffnet im neuen Fenster) deaktiviert und kann bei about:config unter javascript.options.jit.content aktiviert werden. Integriert ist der TraceMonkey-Code für die Plattformen x86, x86-64 und ARM.

Speziell für Mozilla hat die Beschleunigung von Javascript noch eine direkte Bedeutung: Teile des Browsers sind in Javascript realisiert, so dass Mozilla selbst von der Beschleunigung profitiert.


Relevante Themen