Firefox-Nachbrenner für Javascript

Mozillas JägerMonkey soll die Javascript-Performance des Webbrowsers wieder Konkurrenzfähig machen.

In Pocket speichern vorlesen Druckansicht 207 Kommentare lesen
Lesezeit: 2 Min.
Von
  • Benjamin Benz

JägerMonkey soll für Mozilla die Performance-Krone bei der Javascript-Bearbeitung zurückerobern. Derzeit hinkt die Javascript-Engine SpiderMonkey, die unter anderem der Webbrowser Firefox verwendet, immer dann deutlich hinter der Konkurrenz zurück, wenn ihre Erweiterung TraceMonkey nicht greift. Diese versucht, schleifen im Code zu erkennen und sie direkt in Maschinensprache umzusetzen. Klappt das, wird der Code sehr schnell ausgeführt. Enthält der Javascript-Code aber nicht viele Schleifen oder erkennt TraceMonkey sie nicht, so wählt die Engine SpiderMonkey ihren älteren und behäbigen Interpreter mit dem technischem Stand von 2007. In diesen Fällen ziehen dann Konkurrenten wie Nitro aus WebKit und Safari auf und davon. Sie verwenden einen einfacheren Ansatz, der aber häufiger klappt und übersetzen ganze Funktionen in Maschinencode.

JägerMonkey (oder für den Teil der Community, der nicht mit Umlauten umgehen kann, auch JaegerMonkey genannt) soll nun beide Konzepte vereinen. Bevor eine Funktion interpretiert wird, übersetzt der Jäger sie in einen generischen Assembler-Code. Erkennt er dabei Schleifen, übergibt er an TraceMonkey, ansonsten führt er den Code direkt aus und übergeht dabei den langsamen Interpreter. Erste Testläufe versprechen 30 (32-Bit-Code) bis 45 Prozent (64-Bit-Code) Performancezuwachs im Javascript-Benchmark Sunspider.

Anders als TraceMonkey verwendet Jägermonkey nicht Nanojit als Compiler, sondern derzeit Apples Javascript-JIT Nitro. Noch steckt das Jägeräffchen in den Kinderschuhen, doch die Entwickler hoffen, mit der Kombination aus beiden Konzepten immer dann mit der Konkurrenz gleichauf zu ziehen, wenn Tracing nicht klappt und sie andernfalls abzuhängen. Einge Details zu JägerMonkey finden sich in den Blogs der Entwickler David Anderson und David Mandelin sowie dem Projekt-Wiki . (bbe)