夢之光芒
最近在網上看到如上這張圖片,因為好奇,便也挨個瀏覽器測試了一把。結果令人大跌眼鏡,過程也是比較有趣的。
測試的工具便是我那個“無敵耗資源指令碼”——html" target=_blank>產生隨機字元指令碼,現在你在http://monyer.com/demo/RandomChars.html也可以訪問到。
這個指令碼雖然在產生3、5W字元時,在各個瀏覽器看來仍然沒有什麼感覺,但是隨著字元的增加,它的巨爛無比也一覽無餘,(看來有時間要讓月影、JK等大俠幫我看看怎樣最佳化才是),因為輕鬆地就可以把各個瀏覽器之間的差距拉大。
以下便是測試資料了:
IE6______10W_______________93
IE7______10W_______________89
FF3___ __10W_______________18____可以不到一秒鐘運算完畢,但是需要很長時間顯示出來
Opera____100W______________20____
IE8______100W______________11____一次暫停
chrome___500W______________23____雖然23秒計算完畢,但是又用了25秒才顯示出來
safari4____500W______________10____雖然用了10秒鐘計算,但是又用了10秒鐘顯示。
非常有趣,這個和文首圖中的結果大致相同,不同的是FF3排在了Opera的後面。
IE6和IE7就不用說了,跟我的無敵指令碼一樣——巨爛無比。並且從IE6到IE7幾乎沒有任何效能改進,他們只能處理10W級的資料,並且時間達到了誇張的1:30分鐘。
接下來排倒數第二(我認為IE6應該不算了)的是Firefox,這令我感覺有些失望,我本來認為它能處理100W級以上的資料,沒想到10W級就撂倒了。不過比較有趣的是,FF3能在1秒中內計算出資料,卻用了20倍以上的時間來顯示出來,估計跟它那曆史淵源的“記憶體泄露”問題如出一轍吧!
傳說Opera是沒有那個暫停機制的(那個幾乎每個瀏覽器都會有的“暫停當前指令碼或繼續”的框框),它在本指令碼的處理上以10倍的數量級超過了FF。
然後是IE8,經過一次暫停後,它能在總11秒的時間內計算出100W級的資料,對比IE6、IE7來說,這個進步不小,也憑這一點,它可以暫時在口碑上超過FF一段時間了。
然後是Google的Chrome,傳說中的運行速度比IE7快幾十倍看來真不是吹出來了。不過由於它的多線程機制,雖然用了20多秒計算出了資料,但是又用了20多秒來顯示資料,從測試資料的角度看,很滑頭是不是,呵呵!
然而Chrome是最快的瀏覽器嗎?Safari一聲巨響:不是!Safari的運算速度和顯示速度是Chrome的2倍,而且也是多線程機制,分布計算分布處理。使得它跟Chrome一樣在把資料顯示出來之前就已經停止了計時器,而且輕鬆地成為了王者!
到頭來,看Safari比IE7快多少?(89/10)/(10/500)= 445倍
而且還不僅僅如此,在IE、FF等瀏覽器早已經崩潰的時候,Safari和Chrome依然靈活自如。
所以追求速度的朋友不妨用用這兩款瀏覽器吧!(當然渲染速度也是一流的)
BTW,今天整理收藏夾時,翻到了當初共用給大家的一段擷取空間css的指令碼,已經失效了,於是又寫了一份新的出來。新舊對比如下:
新指令碼:
javascript:if(location.host!=hi.baidu.com){alert(此域非百度空間)}else{l=document.getElementsByTagName(link);for(i=1;l[i];i++){h=l[i].href;if(h.match(/[0-9a-f]{24}/i)){location=h;break;}}}
舊指令碼:
javascript:if(location.href.indexOf(hi.baidu.com) !=-1){var a=document.getElementsByTagName(link);if(a[0].href.length>40) location.href=a[0].href;else location.href=a[1].href;}else{alert("你所在的位置不是百度")}
已經忘記舊指令碼是什麼時候寫的了,不過一眼就看出來了,巨巨巨爛無比——就像要從北京去廣州,卻到烏魯木齊中轉了一下似的,結果烏魯木齊飛機場改建了,便也找不到北了。
可能瀏覽器間的差異也像如此吧,只不過更加地複雜化!
另外共用另一段我比較常用的指令碼:
javascript:var a=document.links;var b = "";var i=a.length;for(var i=0;i<a.length;i++){b+="<br/><a target=_blank href="+a[i].href+">"+a[i].href+"</a>"};document.write(b);
查看當前頁面的所有串連,當需要挨個走頁面時,比較好用。
好了,就這些!
Monyer