JavaScript迴圈效能大比拼

來源:互聯網
上載者:User

在設計選取器,我就做了這方面的比較,只不過這次幸運遇到另一個測試程式,它覆蓋面更廣,測試類型更全面。最後發現自己在選取器中用了一個很慢的迴圈……囧。由於IE效能比較低下,原程式根本無法運行,因此我把它移到我的部落格上來,漢化一下,並減少大量的測試個數(原程式測試個數為1000,我把IE的測試個數減少為300)。但即使這樣,它還是彈出警告框問你是否中止迴圈,你繼續按否,就能看到結果了。

運行結果:

查看運行結果

由上面的實驗我們基本上可得出以下結論:

  1. while迴圈比for迴圈快。
  2. 倒序迴圈比順序迴圈快。
  3. 緩衝length屬性比不緩衝快。
  4. 請不要用arr[i]來判斷是否中止迴圈。
  5. 請不要在迴圈內聲明變數,用它來引用數組元素,若真的想省幾個字元,請在迴圈外聲明。
  6. 除非是迴圈對象的屬性,請不要用for...in迴圈。
  7. 請不要用JavaScript 1.6 的forEach迭代器,特慢!

由於javascript與DOM緊密相連,操作DOM基本上是操作其中的元素節點,因此我覺得基本上以下幾個迴圈就夠用:

//順序
for(var i=0,n=arr.length;i<n;i++){}

var i = 0, n= arr.length; while (i<n) { i++; }

//倒序

var i = arr.length; while (i--) { }

//遍曆對象(不要用在數組上)
var val;
for(var key in obj){
val = obj[key]
}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.