Firefox 3.1: TraceMonkey beschleunigt Javascript erheblich
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.
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.