1

存储具有 4 个整数属性的长度为 10,000 的数组的更有效(就内存消耗而言)方法是什么:

选项 1:对象数组

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

或者

选项 2:四个整数数组

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% 准确,但它确实显示出显着差异:

对于第一个选项,创建一个包含 10,000 个元素的数组,每个元素是一个具有您指定的 4 个属性的对象,初始化数组后内存使用量增加了大约10MB 。

第二个选项,创建 4 个数组,每个数组包含 10,000 个元素,使内存使用量增加了大约5MB

一些内存使用跳跃可能与创建和内部浏览器内容的实际处理有关,但关键是 -正如预期的那样- 创建对象会为您存储的数据增加更多开销。

于 2012-06-22T18:23:50.423 回答
0

就内存而言,四个包含 10,000 个元素的数组可能更好,因为您只存储四个复杂对象(数组),然后是 40,000 个整数——而另一种方式是存储 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 回答