8

より多くのメモリを使用するのは、各項目が配列である items1 または各項目がオブジェクトである items2 です。

var items1=[['James Bond',8,40],
...,
['Superman',9999,36]];
var items2=[{Name,'James Bond',strength:8,coolness:40},
...,
{Name,'Superman',strength:9999,coolness:36}];

search1 と search2 のデータを取得する最も速い方法はどれですか?

var search1=items[432][2];
var search2=items2[432]["coolness"];

PS: 与えられたスコアは非公式であり、2 人のキャラクターに対する個人的な意見です。

2番目の編集:テストの写真がありましたが、フェリックスが指摘したように、それは歪んでいました. これはより正確です: http://jsperf.com/sparse-objects/3は、配列の検索が 20% 高速であることを示しています。

4

1 に答える 1

5

私は単体テストを書くのが得意ではありませんが、それほど大きな違いはないことを示す簡単な例を次に示します。

// see code in fiddle

http://jsfiddle.net/ryanwheale/HbHxv `

そして、これはもう少し出力と制御を備えた別のものです:

// see code in fiddle

http://jsfiddle.net/ryanwheale/HbHxv/4/

開発ツールでChromeのタイムラインを使用すると、各メソッドがどれだけのメモリを消費するかを確認できるため、2番目のオプションが気に入っています。記録を開始し、「オブジェクト」ボタンを数回クリックし、数秒待ってから「配列」ボタンを数回クリックします。オブジェクトによって消費されるメモリは、配列によって使用されるメモリよりも多いことがわかります。実行時間の観点からも、アレイにはわずかな利点があるようです。しかし、私たちは百万のアイテムについて話している...それは非常に非現実的です。

于 2013-01-17T22:20:47.080 に答える