Arayのpushとunshift方法の性能比較分析

1108 ワード

原理から分かりますが、unshiftの効率は低いです.なぜかというと、元素を追加するごとに、既存の元素を一つ下に移動します.効率の違いはどれぐらいですか?これからテストします.テスト環境の主なハードウェア:CPU T 7100(1.8 G);メモリ4 G DDR 2 667;ハードディスク5400回転.主なソフトウェア:OSは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回のプッシュとunshiftを実行しました.一回実行したら、結果が分かります.12 1152が表示されます.unshiftはプッシュより100倍ぐらい遅いです.そのため、普段はunshift、特に大きな配列を慎重に使います.どうしてもunshiftの効果を達成したいなら、他の方法がありますか?答えは肯定的です.Arayには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の性能は極めて高く、さらには余分な消耗もなく、安心して使えます.
才能があなたの野心に耐えられない時は、心を潜めて頭を下げて勉強してください.