JavaScript und HTML5 Benchmarks wie IEFishtank oder Asteroids sind ja recht nett, aber für den Alltag wenig aussagekräftig. Sie sind sicher interessant für das “Web der Zukunft”, aber momentan wird das Internet nicht primär für aufwändige HTML5 Games und virtuelle Aquarien verwendet, sondern um normale Webseiten aufzurufen wie Google, Facebook, YouTube, CNN etc.
Ich wollte daher einen praxisnahen Browsertest durchführen und konkret die Ladezeit der einzelnen Browser testen, und zwar vom Starten des Browsers (Mausklick) bis die Seite fertig geladen ist. Dieser Test war ziemlich aufwändig und weiter unten werde ich die Methoden näher erläutern, aber hier zunächst die Ergebnisse:
| Browser |
Rang ø
|
Ladezeit ø
|
| 1. Internet Explorer 9 64Bit RTM |
2,00 |
1,30 |
| 2. Internet Explorer 9 32Bit RTM |
2,63 |
1,54 |
| 3. Google Chrome 10.0.648.133 |
3,00 |
2,05 |
| 4. Firefox 4 RC |
3,38 |
1,78 |
| 5. Opera 11.01 |
4,50 |
2,78 |
| 6. Safari 5.04 |
5,38 |
3,50 |
Getestet wurden die Webseiten
- Facebook
- Amazon.de
- Youtube.com
- CNN.com
- NYTimes.com
- Wikipedia.org
Jede Seite wurde in jedem Browser geladen und die Zeit vom Mausklick bis zur fertig geladenen und dargestellten Seite danach gemessen.
Für jede Seite wurde auch ein Rang ermittelt, hier sieht man den Mittelwert der Ladezeit (rot) und den mittleren Rang (blau). So könnte man in der Gesamtwertung darüber diskutieren ob Chrome oder Firefox auf Platz 3 oder 4 liegen, je nachdem ob man die durchschnittliche Ladezeit heranzieht oder den durchschnittlichen Rang bei den einzelnen Tests.
Mittlerer Rang und Mittlere Ladezeit (kleiner ist besser).
Fazit: Internet Explorer 9 RTM kann nicht nur bei HTML5 und JavaScript Benchmarks mit seiner Geschwindigkeit überzeugen, sondern auch im Praxistest ist er der schnellste Browser.
Methodik
Die Grundidee war, typische Webseiten mit allen aktuellen Browsern aufzurufen und die gesamte Ladezeit zu messen, vom Klick bis zur fertig dargestellten Seite.
Ursprünglich wollte ich die Testreihe möglichst automatisieren und mir wurde dafür ein Tool namens HttpWatch empfohlen. Bei genauerer Betrachtung war dieses Tool aber ungeeignet, da es nur die Ladezeit des Markups misst, und nicht wie lange der Browser zum starten braucht und wie lange er zum Rendern der Seite braucht.
Ich musste also die Zeiten händisch messen. Natürlich würde das mit einer Stoppuhr nicht funktionieren, da die Unterschiede im Hundertstelbereich liegen. Ich erstellte daher ein Power Shell Skript um die 6 verschiedenen Browser auf 6 verschiedene Webseiten loszulassen. Alle 8 Sekunden (im zweiten Test 15 Sekunden) wurde ein Browser mit einer Webseite aufgerufen, gleichzeitig wurde das ganze mit Camtasia Studio als Screen-Video aufgezeichnet.
Um den Klick in der Timeline des Schnittprogramms Camtasia Studio später auch visuell erkennen zu können, wurde unmittelbar vor dem Aufruf des Browsers ein Biep-Ton ausgelöst. So musste ich nachher nur im Video die Stelle mit dem Biep suchen und die Zeit von dort bis zu dem Punkt wo die Seite fertig geladen wurde messen. Dies ist eigentlich recht einfach – das ganze musste ich aber 48 mal wiederholen, was die Sache etwas zeitaufwändig machte.
Der Prozess ist ziemlich genau – bei 15 Frames pro Sekunde sind die Ergebnisse dementsprechend auf fünfzehn Hundertstelsekunden genau, wenn man das Video framegenau auswertet.

Wer sich gerne die Mühe machen will, in meinem Video die Zeiten nachzumessen, der findet hier den gesamten Screencast mit allen Messungen auf Youtube:
Die Detailergebnisse meiner Messungen:
| Browser |
Webseite |
Ergebnis |
Rang |
| Chrome |
Facebook |
1,24 |
4 |
| Firefox 4 RC |
Facebook |
1,14 |
3 |
| Safari |
Facebook |
2,00 |
5 |
| Opera |
Facebook |
2,02 |
6 |
| IE9 32Bit |
Facebook |
1,04 |
1 |
| IE9 64Bit |
Facebook |
1,04 |
1 |
| Chrome |
Amazon |
1,19 |
3 |
| Firefox 4 RC |
Amazon |
1,24 |
5 |
| Safari |
Amazon |
2,19 |
6 |
| Opera |
Amazon |
1,14 |
1 |
| IE9 32Bit |
Amazon |
1,16 |
2 |
| IE9 64Bit |
Amazon |
1,22 |
4 |
| Chrome |
Youtube |
0,27 |
1 |
| Firefox 4 RC |
Youtube |
1,10 |
3 |
| Safari |
Youtube |
2,02 |
6 |
| Opera |
Youtube |
1,29 |
5 |
| IE9 32Bit |
Youtube |
1,21 |
4 |
| IE9 64Bit |
Youtube |
1,07 |
2 |
| Chrome |
CNN |
2,15 |
2 |
| Firefox 4 RC |
CNN |
2,17 |
4 |
| Safari |
CNN |
3,28 |
6 |
| Opera |
CNN |
2,16 |
3 |
| IE9 32Bit |
CNN |
2,26 |
5 |
| IE9 64Bit |
CNN |
1,18 |
1 |
| Chrome |
New York Times |
5,04 |
6 |
| Firefox 4 RC |
New York Times |
2,19 |
3 |
| Safari |
New York Times |
4,19 |
5 |
| Opera |
New York Times |
4,15 |
4 |
| IE9 32Bit |
New York Times |
1,24 |
1 |
| IE9 64Bit |
New York Times |
1,25 |
2 |
| Chrome |
CNN (2) |
3,02 |
1 |
| Firefox 4 RC |
CNN (2) |
3,12 |
2 |
| Safari |
CNN (2) |
4,04 |
4 |
| Opera |
CNN (2) |
4,10 |
6 |
| IE9 32Bit |
CNN (2) |
4,06 |
5 |
| IE9 64Bit |
CNN (2) |
3,23 |
3 |
| Chrome |
New York Times (2) |
3,19 |
4 |
| Firefox 4 RC |
New York Times (2) |
2,20 |
3 |
| Safari |
New York Times (2) |
9,04 |
6 |
| Opera |
New York Times (2) |
6,11 |
5 |
| IE9 32Bit |
New York Times (2) |
1,17 |
1 |
| IE9 64Bit |
New York Times (2) |
1,24 |
2 |
| Chrome |
Wikipedia |
0,26 |
3 |
| Firefox 4 RC |
Wikipedia |
1,06 |
4 |
| Safari |
Wikipedia |
1,23 |
5 |
| Opera |
Wikipedia |
1,25 |
6 |
| IE9 32Bit |
Wikipedia |
0,21 |
2 |
| IE9 64Bit |
Wikipedia |
0,13 |
1 |
Insgesamt hatte ich zwei Testläufe, da ich im ersten Testlauf das Testfenster mit 7 Sekunden zu knapp bemessen hatte, und vor allem für die Seiten, die besonders lange zum Laden brauchten, (wie New York Times und CNN) einen zweiten Messwert haben wollte, außerdem ergänzte ich im zweiten Testlauf noch Wikipedia – die Seite im Test die übrigens am schnellsten geladen wurde.
Internet Explorer 9 konnte im Test Wikipedia in nur 13 Hundertstelsekunden laden!
Wer das ganze gerne selber ausprobieren möchte, muss sich alle genannten Browser installieren und folgendes Power Shell Skript ausführen:
|
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046
|
# List of browsers $strBrowsers = @(` "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe", ` "C:\Program Files (x86)\Mozilla Firefox\firefox.exe", ` "C:\Program Files (x86)\Safari\Safari.exe", ` "C:\Program Files (x86)\Opera\opera.exe", ` "C:\Program Files (x86)\Internet Explorer\iexplore.exe", ` "C:\Program Files\Internet Explorer\iexplore.exe"` );
# List of websites $strWebsites = @(` "http://www.facebook.com/windowsdeutsch?sk=wall", ` "http://www.amazon.de", ` "http://www.youtube.com", ` "http://www.cnn.com", ` "http://www.nytimes.com/", ` "http://de.wikipedia.org"` );
CloseAllBrowsers
foreach ($objWebsite in $strWebsites) { foreach ($objItem in $strBrowsers) { [console]::beep(415, 100) Start-Process -FilePath $objItem ` -ArgumentList $objWebsite ` -WindowStyle Maximized Start-Sleep -s 1 $objItem = Split-Path $objItem -Leaf $objItem = $objItem.ToLower() $objItem = $objItem -replace(".exe","") Get-Process $objItem | foreach {$_.CloseMainWindow()} Start-Sleep -s 1 } }
function CloseAllBrowsers { foreach ($objItem in $strBrowsers) { $objItem = Split-Path $objItem -Leaf $objItem = $objItem.ToLower() $objItem = $objItem -replace(".exe","") Get-Process $objItem | foreach {$_.CloseMainWindow()} } }
|
Ich bin mir bewusst, dass man für aussagekräftigere Ergebnisse mehrere Durchläufe machen müsste, und vielleicht noch ein paar Webseiten mehr in den Test einbeziehen sollte, aber da die Messungen ja manuell erfolgen, habe ich dafür die Zeit nicht. Aber irgendwie denke ich, dass das das Ergebnis nicht stark verändern würde 