做了一些 benchmark。我的機器:
- Intel Core-i7 720QM:performance cpufreq governor
- Transcend JM1333KSN-4G x 2:在測試時還剩下約 1GB 空間(扣掉 Buffer 則剩 3.5GB)
- Linux 2.6.38:有開 per-session auto-group(CONFIG_SCHED_AUTOGROUP=y)
參賽的瀏覽器有:
- Chromium 11.0.696.16:
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.16 Safari/534.24 - Firefox 4.0:
Mozilla/5.0 (X11; Linux x86_64; rv:2.0) Gecko/20110323 Firefox/4.0 - Opera 11.10 beta:
Opera/9.80 (X11; Linux x86_64; U; zh-tw) Presto/2.8.119 Version/11.10
測試 0:
-
Acid3
- Chromium:100/100
- Firefox:97/100
- Opera:100/100
-
冷啟動速度:
- Chromium:4.16s(8.33 次)
- Firefox:1.5s(3 次)
- Opera:5.16s(10.33 次)
冷啟動速度是執行「sync ; echo 3 > /proc/sys/vm/drop_caches」以後啟動瀏覽器到視窗出現,游標閃爍的次數(每次 0.5s)。測了三次,精度不是很準確... 看看就好!
測試 1 - CPU 0%(幾乎沒有其他負載):
-
V8 Benchmark Suite
瀏覽器 Score Richards DeltaBlue Crypto RayTrace EarleyBoyer RegExp Splay Chromium 4380 3671 4333 4685 4874 13809 1952 3157 Firefox 3583 5454 3954 5745 2787 3505 1312 4775 Opera 3091 2606 2063 3115 4593 4109 1447 5901 -
Sunspider 0.9.1
- Chromium: 353.2ms +/- 1.5%
- Firefox: 285.9ms +/- 1.8%
- Opera: 353.2ms +/- 4.6%
-
大頁面測試:
- Chromium:0.247s
- Firefox:2.083s
- Opera:2.679s
測試 2 - CPU 100%(make kernel, -j16):
-
V8 Benchmark Suite
瀏覽器 Score Richards DeltaBlue Crypto RayTrace EarleyBoyer RegExp Splay Chromium 1532 1488 1683 1767 1264 4597 708 1087 Firefox 1189 2079 1585 1805 985 1171 602 812 Opera 1594 1224 1012 1738 2532 1903 640 3936 -
Sunspider 0.9.1
- Chromium: 870.5ms +/- 25.2%
- Firefox: 811.6ms +/- 17.3%
- Opera: 813.1ms +/- 6.3%
-
大頁面測試:
- Chromium:4.357s
- Firefox:4.812s
- Opera:5.524s
其中「大頁面測試」一項,是先重整三次(確認檔案讀進了 filesystem buffer),然後再重整三次的成績平均。Chromium 快的很神奇 @@
為什麼會有在 CPU 100% 下的測試呢?因為我使用 Gentoo Linux,常常會編譯東西。可是在編譯的同時,也會一邊上網、看信... 等等。所以在 CPU 負載高的情況下使用瀏覽器是很常有的事情。
跑 Sunspider 的時候,Chromium 會更新每個跑完的測試結果,可是 Firefox 完全不會顯示東西(這算是偷吃步嗎?),Opera 會顯示,但是中間的藍色方框內會閃爍。
對我來說,瀏覽器的速度(網頁顯示速度、分頁切換速度、UI 反應速度)很重要。我無法忍受切換分頁或點個書籤要等一兩秒才看得到東西... 所以「使用心得」主要是速度測試。
附錄 - 大頁面測試使用的網頁:
<html> <head> <title>A very big page!</title> <script language="javascript"> var startTime = new Date(); function showElapsedTime() { var endTime = new Date(); var elapsedTime = Number(endTime - startTime); document.getElementById("results").innerHTML = "took " + Number(elapsedTime / 1000) + " sec"; } </script> </head> <body onload="showElapsedTime();"> <p id="results">calculating...</p> <p>這裡是很長很長的段落</p> <p>重複 n 次</p> <p>導致這個檔案長大到 10MB...</p> </body> </html>