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


從原理就可以知道,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性能極高,甚至於沒有額外的消耗,可以放心使用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM