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 つの整数プロパティを持つ長さ 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;
オプション 2. 4 つのオブジェクト (配列もオブジェクトです) 対 10001 オブジェクト。
開いているタブに関する情報を表示する Google Chrome タスク マネージャー ( Shift+ESC) で両方のオプションを実際にテストしました。これは 100% 正確ではないかもしれませんが、大きな違いが示されています。
最初のオプションでは、それぞれが指定した 4 つのプロパティを持つオブジェクトである 10,000 要素の配列を作成します。配列を開始した後、メモリ使用量は約10MB跳ね上がりました。
それぞれ 10,000 要素の 4 つの配列を作成する 2 番目のオプションでは、メモリ使用量が約5MB跳ね上がりました。
そのメモリ使用量の急増の一部は、実際の作成処理と内部ブラウザのものに関連している可能性がありますが、ポイントは、予想どおり、オブジェクトを作成すると、保存しているデータのオーバーヘッドが増えるということです。
4 つの複雑なオブジェクト (配列) と 40,000 の整数のみを格納するため、10,000 要素の 4 つの配列の方がおそらくメモリの点で優れています。一方、10,000 の配列と 40,000 の整数 (配列ごとに 4 つ) を格納します。
私の推測では、純粋にビットとバイトの観点から、単一の多次元配列が最小のフットプリントを持つでしょう:
var p = [];
p[0] = [1,1,1,1];