從原理就能夠知道,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性能極高,甚至於沒有額外的消耗,能夠放心使用。性能
當你的才華撐不起你的野心的時候、請潛下心、低下頭、好好學習、學習