Opera Performance-König bei JavaScript

Steffen Weber
171 Kommentare

Opera zeigt bei einem Performance-Test der JavaScript-Implementierungen aktueller Browser der Konkurrenz nur die Schlusslichter und führt die Instruktionen mehr als dreimal so schnell aus wie Firefox und Internet Explorer. Das in Millisekunden angegebene Endergebnis setzt sich aus acht Teil-Benchmarks zusammen.

Mit diesem Ergebnis wird Opera seinem Ruf als besonders schlanker und Ressourcen schonender Browser gerecht – auch wenn er schon lange nicht mehr auf eine Diskette passt, womit sich der norwegische Hersteller früher gerne geschmückt hat. Während Opera 9.0 zum Ausführen aller acht Benchmarks insgesamt knapp gemittelte 442 Millisekunden benötigt, wartet man im Internet Explorer 6.0 stolze 1622 Millisekunden und in Firefox 1.5 gar 1974 Millisekunden. Das Ergebnis von Firefox verbessert sich etwas auf 1752 Millisekunden, wenn man den Safe Mode aktiviert, in welchem unter anderem sämtliche Extensions abgeschaltet werden.

JavaScript-Performance
    • Internet Explorer 6.0 SP2
      1.622
    • Mozilla Firefox 1.5
      1.974
    • Mozilla Firefox 1.5 (Safe Mode)
      1.752
    • Opera 9.0
      442
Einheit: Millisekunden

Da jedermann die JavaScript Speed Tests binnen weniger Sekunden selbst ausführen kann, haben auch wir einige Ergebnisse unter Berücksichtigung der aktuellen Vorabversionen des Internet Explorer 7 und Mozilla Firefox 2.0 auf einem Notebook mit Pentium M 1,6 GHz (Dothan) zusammengetragen. Diese lassen auf den ersten Blick vermuten, dass die aktuelle Beta 3 des Internet Explorer 7 – im Diagramm „MSIE 7.0 Beta 3 (ActiveX-AJAX)“ – gegenüber Version 6 deutlich Geschwindigkeit bei der Ausführung von JavaScript-Code eingebüßt hat.

JavaScript-Performance CB-Test
    • MSIE 6.0 SP2 (ActiveX-AJAX)
      1.170
    • MSIE 7.0 Beta 3 (ActiveX-AJAX)
      1.930
    • MSIE 7.0 Beta 3 (natives AJAX)
      1.090
    • Mozilla Firefox 1.5
      1.440
    • Mozilla Firefox 2.0 Beta 1
      1.350
    • Opera 9.01
      440
Einheit: Millisekunden

Bei genauer Betrachtung der Ergebnisse der einzelnen Teil-Benchmarks stellt man jedoch fest, dass dieser Performance-Verlust des Internet Explorer 7 ausschließlich durch den Test „Ajax declaration“ verursacht wird. Dieser erzeugt Objekte vom Typ „XmlHttpRequest“, welche die Kommunikation mit dem Webserver nach beendetem Ladevorgang der Website ermöglichen (Stichwort AJAX). Version 6 des Internet Explorer kennt diese Klasse jedoch noch nicht, daher muss man dort den Umweg über ActiveX – mittels „new ActiveXObject("Microsoft.XMLHTTP")“ – gehen. In dem genannten Benchmark kommt zu diesem Zweck eine fragwürdige Browser-Weiche (Quelltext) zum Einsatz, welche auch Version 7 des Internet Explorer abfängt und diesen auf die ActiveX-Variante verweist, obwohl dies dort nicht nötig wäre.

Um der Frage auf den Grund zu gehen, ob die Performance im Internet Explorer 7 auch ohne den eigentlich nur in Version 6 notwendigen Umweg über ActiveX leidet, haben wir die genannte Browser-Weiche in dem Benchmark angepasst, so dass der Internet Explorer 7 die „XmlHttpRequest“-Objekte direkt erzeugt. Es zeigt sich, dass Version 7 des Internet Explorer dann sogar etwas schneller ist als Version 6 – im Diagramm „MSIE 7.0 Beta 3 (natives AJAX)“. Zwar kommt der Internet Explorer mit diesem Ergebnis noch lange nicht an die von Opera 9 gesetzte Bestmarke heran, lässt jedoch Firefox hinter sich.

Webentwickler sollten also darauf achten, im Internet Explorer 7 Objekte vom Typ XmlHttpRequest nicht mit Hilfe von ActiveX, sondern durch direktes Erzeugen einer Instanz der eingebauten Klasse zu initialisieren.

25 Jahre ComputerBase!
Im Podcast erinnern sich Frank, Steffen und Jan daran, wie im Jahr 1999 alles begann.