createElement與createDocumentFragment的測試程式碼。
網友 Adam Lee 已準備好一個測試程式 http://jsfiddle.net/z3caE/ 大家可以用不同瀏覽器玩玩看分數如何?
以下是我在本機端的測試程式:
在 body 裡加入:
在 <script>
裡加入以下測試程式碼:
02 | var oUL = document.getElementById( "ulItem" ); |
03 | for ( var i = 0; i <= 20000; i++) { |
04 | var oLI = document.createElement( "li" ); |
06 | oLI.appendChild(document.createTextNode( "Item" + i)); |
11 | var oUL = document.getElementById( "ulItem" ); |
12 | var oTemp = document.createDocumentFragment(); |
13 | for ( var i = 0; i <= 20000; i++) { |
14 | var oLI = document.createElement( "li" ); |
15 | oLI.appendChild(document.createTextNode( "Item" + i)); |
16 | oTemp.appendChild(oLI); |
18 | oUL.appendChild(oTemp); |
21 | var divce = document.getElementById( "msgce" ); |
22 | var divcdf = document.getElementById( "msgcdf" ); |
24 | divce.innerHTML += "CE-LI:" |
25 | for ( var i =0; i <= 10; i++) { |
26 | var s = ( new Date).getTime(); |
28 | divce.innerHTML += (( new Date).getTime() - s) + "," ; |
31 | divcdf.innerHTML += "CDF-LI:" |
32 | for ( var i =0; i <= 10; i++) { |
33 | var s = ( new Date).getTime(); |
35 | divcdf.innerHTML += (( new Date).getTime() - s) + "," ; |
TestLiCE函式主要透過 createElement 進行元素的新增。TestLiCDF 函式主要透過 createDocumentFragment 進行元素的新增。另外我加入 10 次迴圈,記錄這 10 次的時間值,可以看出平均值。
createElement與createDocumentFragment的分數?
IE 10 得到的分數是:
Firefox 21 得到得分數是:
Chrome 27 得到的分數是:要跑好久好久。為了讓結果出現,將函式內迴圈的值修改 i <= 2000
,得到以下結果:
文章發佈後約 20 來分鐘,Chrome 終於跑完了。
回覆刪除((昏倒...
Sorry,
回覆刪除此文有嚴重錯誤,請參考 http://blog.kkbruce.net/2012/02/javascript_24.html 的留言。