2016-12-08 8 views
1

JavaScriptではどちらが効率的ですか?繰り返しの間にどれが速いのですか?そして、ネットワーク経由でフェッチする時間はどれくらいかかりますか?オブジェクト、配列、または配列のようなオブジェクト

オブジェクト、配列、または配列のようなオブジェクトに接続されているユーティリティメソッドに基づく回答は期待していません。

私が話しているシナリオをさらに詳しく説明するには、以下の2つのオプションを確認してください。 1の反復中に高速である

オプション1

["A1", "A2", "A3"] 

オプション2

{"0":"A1", "1": "A2", "2": "A3", "length": 3} 

?そして、ネットワーク経由でフェッチする時間はどれくらいかかりますか?

+5

あなたは配列とオブジェクトが互換性があるという誤った前提から始めているようです。それは通常そうではありません。それぞれに異なるユースケースがあります。したがって、一般的な答えは次のとおりです。ジョブに適切なツールを使用します。しかし、実際に異なるレベルのパフォーマンスが必要な場合は、型付き配列を使用します。 * "ネットワーク経由でフェッチする時間が短い" *その質問は意味をなさない。ネットワーク経由でオブジェクトまたはアレイを転送することはできません。 –

+0

あなたの質問の3つは全て変数の値に依存しています。それは普通のオブジェクトや配列です。 – skyline3000

答えて

0

私は配列が唯一の配列であるため、配列が最高であると想像します。オブジェクトを使用する場合は、フェッチするその他の多くのプロパティがあります。

しかし、私が間違っているとは限りません。なぜなら、オブジェクトは適切な状況では配列よりも便利だからですが、フェッチするのに最も速いのは配列になると思います。

+0

* "オブジェクトを使用する場合は、フェッチするための他の多くのプロパティがあります。" *それはどういう意味ですか? –

+0

オブジェクトには組み込みのオブジェクトメソッドやその他の情報のようなものが必要です。配列を使用する場合は、変数名とその内部の値と同じくらい簡単です。 – GreenHawk1220

+1

組み込みの配列メソッドは何ですか(組み込みのオブジェクトメソッドよりも組み込みの配列メソッドがあります)? –

0

私はGreenHawkの答えに同意しません。 JavaScript の配列は、配列プロトタイプを持つ単純な単純オブジェクトです。です。したがって、データのインデックスは実際には整数=>データです。これは、次のスニペットで見ることができ

var arr = ["javascript", "is", "a", "strange", "language."] 
 

 
delete arr["3"]; // because an array is actually a map of "indicies" to values, strings work as well here. 
 
console.log(arr.length); //=> 5 
 
console.log(arr);

限り反復として、配列を使用すると、おそらくあなたの最善の策である、あなたのブラウザはそれを最適化することができる可能性があるため(または少なくともJSならiterateを簡単にすることができます)。

配列のメソッド/プロパティは、プロトタイプ(Javaなどの古典的言語のスーパークラスに似ている)で定義されているため、ネットワーク経由で転送されないため、サイズと転送速度にはほとんど違いがありません。

0

JavaScriptではどちらが効率的ですか?

何が効率的ですか?記憶?

繰り返し処理の方が速いのはどれですか?

いろいろな方法でオブジェクトを反復処理する必要があります。そのため、リンゴとリンゴはありません。これらの2つのループを比較したい場合:

for (value of option1); 
for (key in option2) option[key]; 

最初は適度に速く、たとえば25%です。別の方法でループする場合は、配列にforEach、オブジェクトにObject.keys(option2).forEachを使用すると、違いがより顕著になることがあります。配列がまばらな場合、結果は異なる可能性があります。確かに知る唯一の方法は、ベンチマークを実行することです。その結果は、エンジンごとに、またはエンジンのバージョンごとに異なる可能性があります。

ネットワーク経由でフェッチする時間が短いのはどちらですか?

配列形式は小さく(バイト数が少ないため)、時間がかかりません。しかし、ペイロードがgzipされていると仮定すると、何千もの値について話していない限り、その差はごくわずかです。

基本データが意味論的に配列の場合は、それを配列として扱わないのはなぜですか?

関連する問題