Bei der Javascript Performance ist der aktuelle Firefox hinter die Leistung von Apples Safari sowie Googles Chrome gefallen und die aktuelle Beta-Version des Opera 10.50 lässt sämtliche Konkurrenten hinter sich. Mit der Engine Jägermonkey will Mozilla nun aufholen und nach Möglichkeit auch überholen.
Wenn die Tracemonkey Engine ihre Stärken ausspielen kann ist sie der Konkurrenz überlegen. Jedoch kann das sogenannte Tracing nicht immer eingesetzt werden. In solchen Situation greift Firefox auf die alte Javascript Engine zurück und die ist deutlich langsamer. Andere Javascript Engines verzichten auf Tracing und verfolgen somit einen einfacheren Ansatz, bei dem komplette Methoden in Assembler übersetzt werden. Dieser Ansatz ist zwar ein wenig langsamer als Tracing, kann aber sehr viel häufiger genutzt werden. So sind diese Javascript-Engines in Benchmarks und somit auch im realen Einsatz schneller.
Dazu bedarf es zunächst einmal eines schnellen Assemblers, um nativen Code zu generieren. Da der Native-Code-Compiler von Tracemonkey, Nanojit für Jägermonkey aber nicht besonders gut geeignet ist, griffen die Mozilla-Entwickler auf Apples Javascript-JIT Nitro zurück.
Mit Jägermonkey hat Mozilla angefangen sich diesem Problem zu stellen. Dabei wird ein Ansatz verfolgt der sich bereits bei anderen Engines bewährt hat. Dieser wird mit Tracing verknüpft. Das Ziel dabei ist eine Engine zu entwickeln die schnell ist und wenn sie kann, wenn das Tracing zum Einsatz kommt, sehr schnell ist.
Noch befindet sich diese Entwicklugn am Anfang. Jedoch schnitt der neue Interpreter im Javascript-Benchmark Sunspider dabei rund 30 Prozent schneller ab als der Alte.
Details zu Jägermonkey hat der Entwickler David Anderson in einem Blogeintrag zusammengefasst. Der ebenfalls am Projekt beteiligte David Mandelin beschreibt im Detail, wie die Geschwindigkeitssteigerung zusammenkommt.
Quelle: Golem.de
Tags: Browserkrieg, Design, Engine, Feature, Firefox
