jQuery1.6效能評測

來源:互聯網
上載者:User

上次做了jQuery1.5.1 DOM相關的函數效能測試,有童鞋指出我的計算方法不太合理,這裡換了計時方式。

承接上一篇日誌,這次要做的是jQuery1.6與1.5.2的屬性值相關效能測試,1.6版本重寫了絕大部分屬性值函數,效果如何,慢慢道來。

首先是這次的計時函數。如下所示:

$(function(){var t1=new Date();var t2=new Date();var sum=0;var $input=$("#test");while(t2-t1<500){for(var i=0;i<500;i++){value=$input.val();}sum+=500;t2=new Date();}alert((t2.getTime()-t1.getTime())/sum*1000);});

上次是直接迴圈3000次,然後算時間,3000次在IE6裡往往要逾時,而且IE6把彈提示框並等你按確認的時間也算進去了。所以誤差巨大。這次控制時間為500ms以內,然後統計迴圈的次數,為了減少Date()函數的花銷,設計了這個二重迴圈。最後求的的時間是函數單次啟動並執行平均時間,單位是微秒,就是毫秒的千分之一。

結果。

val函數效能的確有明顯進步,其餘屬性函數基本沒有進步,甚至不如1.5.2了。也許是1.6換代碼只是為了計算更精確和修正BUG,用意不在效能。

不過width函數慢的有點離譜,在IE6下直接用原生的offsetWidth方法可以只用30微秒,原始碼中發現jQuery調用each函數累加了width、margin、padding。好吧,這是css定義的方式。但是我還是沒想通,為什麼一個空div,一句css不寫。原生和jQuery能跑出10倍的效能差。

最後,IE6一如既往的慢,Opera一如既往的優秀和效能穩定。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.