Array的push與unshift方法效能比較分析

來源:互聯網
上載者:User

從原理就可以知道,unshift的效率是較低的。原因是,它每添加一個元素,都要把現有元素往下移一個位置。但到底效率差異有多大呢?下面來測試一下。
測試環境的主要硬體:CPU T7100(1.8G);記憶體4G DDR2 667;硬碟5400轉。主要軟體:作業系統為Windows 7;瀏覽器為Firefox 3.6.9。測試代碼:
複製代碼 代碼如下:
var arr = [ ], s = +new Date;
// push效能測試
for (var i = 0; i < 50000; i++) {
  arr.push(i);
}
console.log(+new Date - s);
s = +new Date;
arr = [ ];
// unshift效能測試
for (var i = 0; i < 50000; i++) {
  arr.unshift(i);
}
console.log(+new Date - s);

這段代碼分別執行了50000次push和unshift操作,運行一次以後,得出結果:
12
1152
可見,unshift比push要慢差不多100倍!因此,平時還是要慎用unshift,特別是對大數組。那如果一定要達到unshift的效果,有沒有其他方法呢?答案是肯定的。
Array有一個叫做reverse的方法,能夠把一個數組反轉。先把要放進數組的元素用push添加,再執行一次reverse,就達到了unshift的效果。比如:
複製代碼 代碼如下:
for (var i = 0; i < 50000; i++) {
  arr.push(i);
}
arr.reverse();

reverse的效能又如何呢,下面再來測試:
複製代碼 代碼如下:
var arr = [ ], s = +new Date;
for (var i = 0; i < 50000; i++) {
  arr.push(i);
}
arr.reverse();
console.log(+new Date - s);

結果是:
12
可見,reverse效能極高,甚至於沒有額外的消耗,可以放心使用。

相關文章

聯繫我們

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