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

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

May 16, 2016 pm 06:09 PM
array push

原理から、シフト解除の効率が低いことがわかります。その理由は、要素を追加するたびに、既存の要素が 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 までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C# の Array.Sort 関数を使用して配列を並べ替える C# の Array.Sort 関数を使用して配列を並べ替える Nov 18, 2023 am 10:37 AM

C# の Array.Sort 関数を使用して配列を並べ替える

PHPのarray_merge_recursive()関数を使用するシンプルで明確な方法 PHPのarray_merge_recursive()関数を使用するシンプルで明確な方法 Jun 27, 2023 pm 01:48 PM

PHPのarray_merge_recursive()関数を使用するシンプルで明確な方法

PHP で array_combine 関数を使用して 2 つの配列を結合して連想配列にする方法 PHP で array_combine 関数を使用して 2 つの配列を結合して連想配列にする方法 Jun 26, 2023 pm 01:41 PM

PHP で array_combine 関数を使用して 2 つの配列を結合して連想配列にする方法

PHPのarray_fill()関数の使い方の詳しい説明 PHPのarray_fill()関数の使い方の詳しい説明 Jun 27, 2023 am 08:42 AM

PHPのarray_fill()関数の使い方の詳しい説明

Python で Array モジュールを使用する方法 Python で Array モジュールを使用する方法 May 01, 2023 am 09:13 AM

Python で Array モジュールを使用する方法

Java での ArrayStoreException の一般的な原因は何ですか? Java での ArrayStoreException の一般的な原因は何ですか? Jun 25, 2023 am 09:48 AM

Java での ArrayStoreException の一般的な原因は何ですか?

PHP の array_change_key_case() 関数の使用方法の概要 PHP の array_change_key_case() 関数の使用方法の概要 Jun 27, 2023 am 10:43 AM

PHP の array_change_key_case() 関数の使用方法の概要

PHPのarray_flip()関数の使い方の紹介 PHPのarray_flip()関数の使い方の紹介 Jun 27, 2023 am 08:24 AM

PHPのarray_flip()関数の使い方の紹介

See all articles