iT邦幫忙

DAY 10
3

jQuery 套件開發之我可不可以跳著說系列 第 10

jQuery套件開發(十),element放入DOM相關速度測試。

速度差異,將近十倍。
驚驚驚
<文章列表>
IT人生組文章
--9/25 : 瀏覽衝量十法(完)
http://ithelp.ithome.com.tw/question/10129651
--9/24 : 連鎖效應後的反思 - 瀏覽衝量十法
http://ithelp.ithome.com.tw/question/10129219
--9/23 : 半澤直樹 - 連鎖效應後的反思
http://ithelp.ithome.com.tw/question/10128966
--9/23 : 推薦大家看半澤直樹
http://ithelp.ithome.com.tw/question/10128756
--9/22 : 不要在電梯裡面討論HTML
http://ithelp.ithome.com.tw/question/10128407

開發技術組文章
--9/25 : jQuery套件開發(十),element放入DOM相關速度測試。
http://ithelp.ithome.com.tw/question/10129658
--9/24 : jQuery套件開發(九),了解reflow的概念
http://ithelp.ithome.com.tw/question/10129232
--9/23 : jQuery套件開發(八),怎麼樣把element 放進DOM中才好呢。
http://ithelp.ithome.com.tw/question/10128771
--9/22 : jQuery套件開發(七),實作套件。
http://ithelp.ithome.com.tw/question/10128406
--9/21 : jQuery套件開發(六),套件的整個流程的小構思。
http://ithelp.ithome.com.tw/question/10128176

全列表
http://ithelp.ithome.com.tw/ironman6/player/sheephead081/alll/1
大家好,今天完全是開心的一天

因為我只要把昨天的測試文件貼上來就OK了

經過測試,我看不到使用detach之後的效能差異。

所以把測試的程式之中,把detach完全沒用到,著重在元素的append上

首先先看一般的應用

$('#btn2')
    .click(function() 
    {
        console.time('直接進行append') ;
        var numLoop = 2000 ;
        var _eleTb = $('#tb').html('') ;
        for (var i=1000; i <= numLoop; i++)
        {
            $('#tb')
                 .append('<tr><td>'+ i +'</td></tr>') ;
        }
         
        console.timeEnd('直接進行append') ;
    }) ;

執行時間大概是80ms

接下來看只append一次大量元素的狀況。

$('#btn1')
    .click(function() 
    {
        console.time('儘量減少reflow') ;
        var numLoop = 1000 ;
        var _eleTb = $('#tb').html('') ;
        var _strNode = '' ;
        for (var i=1; i <= numLoop; i++)
        {
            _strNode += '<tr><td>'+ i +'</td></tr>' ;
        }
        $('#tb')
            .append(_strNode) ;
             
        console.timeEnd('儘量減少reflow') ;
 
    }) ;

執行時間大約是18ms 恩~~~有差捏。但是差別不大。但!這是因為我塞的東西很單純

越複雜速度差異會越大。DEMO網頁如下

http://ry.url.tw/wp/doc/frag.htm

所以這次的測試~~~大成功!( 記得打開console來看阿... )

套件的部分,會找一天實作如果觸發之後

出現的widget有點複雜怎麼辦,不只是一個DIV。

該怎麼控管那些元素會比較合理呢?


上一篇
jQuery套件開發(九),了解reflow的概念。
下一篇
jQuery套件開發之(十一),plugin pattern
系列文
jQuery 套件開發之我可不可以跳著說26
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
老鷹(eagle)
iT邦高手 1 級 ‧ 2013-09-25 09:42:32

沙發

飛

我要留言

立即登入留言