1

4 つの整数プロパティを持つ長さ 10,000 の配列を格納するためのより効率的な (消費されるメモリの観点から) 方法は何ですか?

オプション 1: オブジェクトの配列

var array = [];
array[0] = {p1:1, p2:1, p3:1, p4:1}

また

オプション 2: 整数の 4 つの配列

var p1 = [], p2 = [], p3 = [], p4 = [];
p1[0] = 1;
p2[0] = 1;
p3[0] = 1;
p4[0] = 1;
4

4 に答える 4

1

オプション 2. 4 つのオブジェクト (配列もオブジェクトです) 対 10001 オブジェクト。

于 2012-06-22T18:13:31.470 に答える
0

開いているタブに関する情報を表示する Google Chrome タスク マネージャー ( Shift+ESC) で両方のオプションを実際にテストしました。これは 100% 正確ではないかもしれませんが、大きな違いが示されています。

最初のオプションでは、それぞれが指定した 4 つのプロパティを持つオブジェクトである 10,000 要素の配列を作成します。配列を開始した後、メモリ使用量は約10MB跳ね上がりました。

それぞれ 10,000 要素の 4 つの配列を作成する 2 番目のオプションでは、メモリ使用量が約5MB跳ね上がりました。

そのメモリ使用量の急増の一部は、実際の作成処理と内部ブラウ​​ザのものに関連している可能性がありますが、ポイントは、予想どおり、オブジェクトを作成すると、保存しているデータのオーバーヘッドが増えるということです。

于 2012-06-22T18:23:50.423 に答える
0

4 つの複雑なオブジェクト (配列) と 40,000 の整数のみを格納するため、10,000 要素の 4 つの配列の方がおそらくメモリの点で優れています。一方、10,000 の配列と 40,000 の整数 (配列ごとに 4 つ) を格納します。

于 2012-06-22T18:13:19.490 に答える
0

私の推測では、純粋にビットとバイトの観点から、単一の多次元配列が最小のフットプリントを持つでしょう:

var p = [];
p[0] = [1,1,1,1];
于 2012-06-22T18:13:35.830 に答える