Lang, lang ist’s her als der Browser aus dem Namen Opera nicht nur der schlankeste, sondern auch der schnellste war.
Doch die Konkurrenz holte in den vergangenen Monaten sehr auf und überholte sogar das einstige Optimierungswunder. Nun möchte Opera die Performancekrone gerne zurückgewinnen und geht dabei neue Wege.
Die Vektorgrafik-Bibliothek Vega
Seit Version 8.0 kommt Opera mit der Vektorgrafik-Bibliothek Vega daher, die dem Browser Unterstützung für svg- und Canvas-Grafiken brachte.
Zur Berechnung der Grafiken bediente sich Vega jeher der Hardwarebeschleunigung moderner Grafikkarten mittels Direct3D- und OpenGL-Schnittstelle.
Derzeit befindet sich mit der Version 2.3 der Presto-Engine zur HTML-Darstellung, der Nachfolger des für Opera 10 (Erscheinungstermin 2009) vorgesehenen Presto 2.2-Renderers, in der Entwicklung. In jener Version wird es möglich sein, die hardwarebeschleunige Vega-Engine auch für herkömmliches Rendern von HTML-Code einzusetzen. Aus Kompartibilitätsgründen wird es dennoch einen bisherigen Software-Renderpfad geben.
Für die Entwickler überwiegen die Vorteile dieses Weges deutlich.
Erstens lassen sich Hintergründe und Rahmen nach dem neuen CSS3-Standard über Vektorgrafiken viel leichter umsetzen.
Zweitens ist der Weg über die Hardwarebeschleunigung mittels moderner Grafikkarten um ein vielfaches performater als die langsamere Variante des Softwarerenderns.
Zudem wird es über Vega möglich, schnell und einfach zusätzliche, aufwendigere Grafikeffekte in die Benutzeroberfläche und letztlich auch in Webseiten einzubetten.
Voraussetzung für das Rendern mittels Vega ist, dass das Gerät auf dem der Browser läuft – theoretisch auch ein Smartphone wie das iPhone – eine DirectX 9- beziehungsweise OpenGL samt Framebuffer-Object (FBO)-kompartible Grafikkarte (oder Onboardgrafik) besitzt.
Desweiteren ist die Unterstützung von Pixel Shadern 2.0 beziehungsweise Fragment Shadern in OpenGL von Nöten. Diese Shader werden für das Darstellen von Filtern in SVG und Canvas sowie für für alle Arten von Schatten in den eben genannten Sprachen und HTML verwendet.
Ein Softwaremodus ist aber ebenso vorhanden, der notfalls alle Berechnungen über die CPU ausführt und damit mit jedem Gerät funktioniert.
Mit Carakan gegen SquirrelFish, Tracemonkey und V8
Im Vergleich mit den aktuellen HighSpeed-Javascript-Engines wie WebKit’s SquirrelFish Extreme und Google Chrome’s V8 ist die sparsame und dennoch performate JS-Engine Futhark ins Hintertreffen gerade. Die derzeit in der Entwicklung sich befindende Engine Carakan soll dies wieder ändern und Opera an die Spitze verhelfen.
Um das Ziel zu erreichen, erfährt das Innenleben Operas radikale Änderungen.
Das bisher verwendete stapelspeicher-basierte Bytecode-System weicht einem weniger Instruktionen beanspruchendem Register-Bytecode-System.
Obwohl die neue Engine diesen Bytecode bedeutend schneller ausführen kann, ensteht hierdurch ein größerer Mehraufwand bei einfachen Skripten, der sich wiederum negativ auf die Gesamtgeschwindigkeit auswirkt. Um diesem Effekt entgegen zu wirken, werden ganze Funktionen (oder Teile davon) zusammengefasst und als ganzes umgesetzt.
Aber auch die Methoden zum Anwenden von einfachen und komplexen regulären Ausdrücken bekamen eine Generalüberholung spendiert. So arbeitet die RegExp-Engine nun sehr viel effizienter indem viele unnötige und doppelte Arbeitsschritte unter Zuhilfenahme von einen „Tricks“ eingespart werden.
Desweiteren wurde die Verwaltung von Objekten überarbeitet. So werden Objekte in Carakan intern wie Klassen behandelt. Dies soll wiederum in Anwendungen, die eine Vielzahl von Objekten benutzen, einen enormen Geschwindigkeitschub verpassen.
In Zahlen ausgedrückt, soll Carakan im SunSpider-Benchmarkt mehr als 2,5mal schneller als die in Opera 10 (Alpha) verwendete Presto 2.2-Engine.
Die Arbeiten dauern noch an. Noch funktioniert nicht alles perfekt. Jedoch sprechen die Entwickler, dass Geschwindigkeitsverbesserungen um dem Faktor 50!!! in einigen speziellen Bereichen möglich sind.
Wann wird dies verfügbar sein?
Ich gehe davon aus, dass Opera seine neue Powerarchitektur noch in diesem Jahr – zumindest in Form einer Alpha-Version – neugierigen Entwicklern zur Verfügung stellen wird. Realistisch dafür ist ein Opera 10.5 oder Opera 11. Eine Roadmap liegt mir leider nicht vor.