ホームページ  >  記事  >  ウェブフロントエンド  >  Array のプッシュメソッドとシフト解除メソッドのパフォーマンスの比較分析_JavaScript スキル

Array のプッシュメソッドとシフト解除メソッドのパフォーマンスの比較分析_JavaScript スキル

WBOY
WBOYオリジナル
2016-05-16 18:09:491534ブラウズ

原理から、シフト解除の効率が低いことがわかります。その理由は、要素を追加するたびに、既存の要素が 1 つ下の位置に移動するためです。しかし、効率の差はどれくらいあるのでしょうか?以下でテストしてみましょう。
テスト環境の主なハードウェア: CPU T7100 (1.8G)、メモリ 4G DDR2 667、ハードディスク 5400 rpm。主なソフトウェア: オペレーティング システムは Windows 7、ブラウザは Firefox 3.6.9 です。テストコード:

コードをコピー コードは次のとおりです:

var arr = [ ], s = new Date;
// (var i = 0; i arr.push(i)
コンソールのパフォーマンス テストをプッシュします。 log( new Date - s);
s = new Date;
arr = [ ];
// unshift パフォーマンス テスト
for (var i = 0; i arr.unshift(i);
}
console.log( new Date - s);


このコードは、1 回実行した後、プッシュ操作とシフト解除操作をそれぞれ 50,000 回実行します。 , 結果は次のようになります:
12
1152
アンシフトはプッシュよりもほぼ 100 倍遅いことがわかります。したがって、特に大きな配列の場合は、unshift を慎重に使用する必要があります。では、シフト解除効果を達成する必要がある場合、他の方法はあるのでしょうか?答えは「はい」です。
配列には、配列を反転できる reverse というメソッドがあります。まずプッシュを使用して配列に入れる要素を追加し、次に再度リバースを実行してシフト解除効果を実現します。例:


for (var i = 0) ; i < 50000; i ) {
arr.push(i);


逆のパフォーマンスはどうでしょうか?もう一度実行します:



コードをコピーします
コードは次のとおりです: var arr = [ ], s = 新しい日付; for (var i = 0; i arr.push(i);
arr.reverse(); .log( new Date - s) ;


結果は次のとおりです:
12
逆のパフォーマンスが非常に高く、追加の消費がないことがわかります。安心して使えます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。