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の性能は極めて高く、さらには余分な消耗もなく、安心して使えます.才能があなたの野心に耐えられない時は、心を潜めて頭を下げて勉強してください.