ホームページ ウェブフロントエンド jsチュートリアル array_javascript スキルへの項目追加の JS パフォーマンス分析

array_javascript スキルへの項目追加の JS パフォーマンス分析

May 16, 2016 pm 04:13 PM
js パフォーマンス 配列

配列に項目を追加する 4 つの方法のパフォーマンスを比較しました:

インデクサーを使用して

を追加します

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

console.time("インデックス");
var a = [];
for (var i = 0, l = 回; i a[i] = i;
}
console.timeEnd("インデックス");

プッシュ方式を使用する

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

console.time("push");
var a = [];
for (var i = 0, l = 回; i a.push(i);
}
console.timeEnd("push");

concat メソッドを使用する

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

console.time("concat");
var a = [];
for (var i = 0, l = 回; i a.concat(i);
}
console.timeEnd("concat");

concat メソッドを使用します。パラメータは配列です

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

console.time("配列と連結");
var a = [];
for (var i = 0, l = 回; i a.concat([i]);
}
console.timeEnd("配列と連結");

時間を 10,000 回に設定します:

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

インデックス: 0.310ms
プッシュ: 1.476ms
連結: 8.911ms
配列との連結: 2.261ms

時間を 100000 (10 万) 回に設定します:

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

インデックス: 1.967ms
プッシュ: 11.980ms
連結: 70.410ms
配列との連結: 28.292ms

時間を 1000000 (百万) 回に設定します:

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

インデックス: 138.559ms
プッシュ: 93.074ms
連結: 608.768ms
配列との連結: 243.371ms

時間を 10000000 (1000 万) 回に設定します:

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

インデックス: 1473.733ms
プッシュ: 611.636ms
連結: 6058.528ms
配列との連結: 2431.689ms

概要

この結論は Chrome ブラウザにのみ適用されます

concat メソッドの実行効率が最も遅い
2 つの concat メソッドのパラメータの受け渡しと比較すると、パラメータを配列として受け取った場合、パラメータを配列以外として受け取った場合よりも実行効率が高くなります
ほとんどの場合、インデクサーの実行効率はプッシュメソッドよりも高くなります
実行回数が増えると、インデクサーの実行効率がプッシュ方式に比べて劣り始める

ブラウザの比較

私に経験が足りないことを指摘してくれたネチズンに感謝します。ここでブラウザ間の水平比較を追加します

1 つ目は concat メソッドを使用する方法です。IE と Firefox では、パラメータが配列の場合、実行効率は非配列の場合よりも遅くなりますが、大きな差はありません。
その場合、index メソッドと Push メソッドは concat よりも確実に高速です。Firefox では、index メソッドを使用する方が常に高速です。しかし、その差は大きくありません。
3 つのブラウザ間でインデックスとプッシュ メソッドの実行効率を比較すると、Firefox の実行効率は IE や Chrome よりもはるかに高く、基本的には 10 倍高速です。他のブラウザと比較すると、Firefox の実行効率は基本的に 10 倍高速です

以下は数百万回の結果です:

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

// Firefox
インデックス: タイマーが開始されました
インデックス: 229.79ms
プッシュ: タイマーが開始されました
プッシュ: 205.12ms
concat: タイマーが開始されました
連結: 2136.99ms
配列と連結: タイマーが開始されました
配列との連結: 2365.18ms
``

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

//つまり
インデックス: 2,533.744 ミリ秒
プッシュ: 3,865.979 ミリ秒
連結: 4,303.139 ミリ秒
配列との連結: 4,792.208 ミリ秒

この記事は JS のパフォーマンスについてのみ説明しており、比較を通じて JavaScript についての理解を深めていただければ幸いです。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHP 配列キー値の反転: さまざまな方法のパフォーマンス比較分析 PHP 配列キー値の反転: さまざまな方法のパフォーマンス比較分析 May 03, 2024 pm 09:03 PM

PHP の配列キー値の反転メソッドのパフォーマンスを比較すると、array_flip() 関数は、大規模な配列 (100 万要素以上) では for ループよりもパフォーマンスが良く、所要時間が短いことがわかります。キー値を手動で反転する for ループ方式は、比較的長い時間がかかります。

さまざまな Java フレームワークのパフォーマンスの比較 さまざまな Java フレームワークのパフォーマンスの比較 Jun 05, 2024 pm 07:14 PM

さまざまな Java フレームワークのパフォーマンス比較: REST API リクエスト処理: Vert.x が最高で、リクエスト レートは SpringBoot の 2 倍、Dropwizard の 3 倍です。データベース クエリ: SpringBoot の HibernateORM は Vert.x や Dropwizard の ORM よりも優れています。キャッシュ操作: Vert.x の Hazelcast クライアントは、SpringBoot や Dropwizard のキャッシュ メカニズムよりも優れています。適切なフレームワーク: アプリケーションの要件に応じて選択します。Vert.x は高パフォーマンスの Web サービスに適しており、SpringBoot はデータ集約型のアプリケーションに適しており、Dropwizard はマイクロサービス アーキテクチャに適しています。

データソートにおけるPHP配列グループ化機能の応用 データソートにおけるPHP配列グループ化機能の応用 May 04, 2024 pm 01:03 PM

PHP の array_group_by 関数は、キーまたはクロージャ関数に基づいて配列内の要素をグループ化し、キーがグループ名、値がグループに属する要素の配列である連想配列を返すことができます。

C++ でマルチスレッド プログラムのパフォーマンスを最適化するにはどうすればよいですか? C++ でマルチスレッド プログラムのパフォーマンスを最適化するにはどうすればよいですか? Jun 05, 2024 pm 02:04 PM

C++ マルチスレッドのパフォーマンスを最適化するための効果的な手法には、リソースの競合を避けるためにスレッドの数を制限することが含まれます。競合を軽減するには、軽量のミューテックス ロックを使用します。ロックの範囲を最適化し、待ち時間を最小限に抑えます。ロックフリーのデータ構造を使用して同時実行性を向上させます。ビジー待機を回避し、イベントを通じてリソースの可用性をスレッドに通知します。

Golang の乱数ジェネレーターのパフォーマンスはどのくらいですか? Golang の乱数ジェネレーターのパフォーマンスはどのくらいですか? Jun 01, 2024 pm 09:15 PM

Go で乱数を生成する最適な方法は、アプリケーションに必要なセキュリティのレベルによって異なります。低セキュリティ: math/rand パッケージを使用して、ほとんどのアプリケーションに適した疑似乱数を生成します。高いセキュリティ: crypto/rand パッケージを使用して、より強力なランダム性を必要とするアプリケーションに適した、暗号的に安全なランダム バイトを生成します。

Java フレームワークのパフォーマンス比較 Java フレームワークのパフォーマンス比較 Jun 04, 2024 pm 03:56 PM

ベンチマークによると、小規模で高性能なアプリケーションの場合、Quarkus (高速起動、低メモリ) または Micronaut (TechEmpower に優れた) が理想的な選択肢です。 SpringBoot は大規模なフルスタック アプリケーションに適していますが、起動時間とメモリ使用量が若干遅くなります。

C++ と他の言語のパフォーマンスの比較 C++ と他の言語のパフォーマンスの比較 Jun 01, 2024 pm 10:04 PM

高パフォーマンスのアプリケーションを開発する場合、C++ は、特にマイクロベンチマークで他の言語よりも優れたパフォーマンスを発揮します。マクロベンチマークでは、Java や C# などの他の言語の利便性と最適化メカニズムの方がパフォーマンスが優れている場合があります。実際のケースでは、C++ は画像処理、数値計算、ゲーム開発で優れたパフォーマンスを発揮し、メモリ管理とハードウェア アクセスを直接制御することで明らかなパフォーマンス上の利点をもたらします。

重複要素の検索における PHP 配列グループ化関数の役割 重複要素の検索における PHP 配列グループ化関数の役割 May 05, 2024 am 09:21 AM

PHP の array_group() 関数を使用すると、指定したキーで配列をグループ化し、重複する要素を見つけることができます。この関数は次の手順で動作します。 key_callback を使用してグループ化キーを指定します。必要に応じて、value_callback を使用してグループ化値を決定します。グループ化された要素をカウントし、重複を特定します。したがって、array_group() 関数は、重複する要素を見つけて処理するのに非常に役立ちます。

See all articles