存储具有 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 个整数属性的长度为 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;
选项 2。4 个对象(数组也是对象)与 10001 个对象。
我实际上使用 Google Chrome 任务管理器测试了这两个选项,它显示了有关打开的选项卡 ( Shift+ESC
) 的信息,虽然这可能不是 100% 准确,但它确实显示出显着差异:
对于第一个选项,创建一个包含 10,000 个元素的数组,每个元素是一个具有您指定的 4 个属性的对象,初始化数组后内存使用量增加了大约10MB 。
第二个选项,创建 4 个数组,每个数组包含 10,000 个元素,使内存使用量增加了大约5MB。
一些内存使用跳跃可能与创建和内部浏览器内容的实际处理有关,但关键是 -正如预期的那样- 创建对象会为您存储的数据增加更多开销。
就内存而言,四个包含 10,000 个元素的数组可能更好,因为您只存储四个复杂对象(数组),然后是 40,000 个整数——而另一种方式是存储 10,000 个数组和 40,000 个整数(每个数组 4 个)。
我的猜测是,纯粹从位和字节的角度来看,单个多维数组的占用空间最小:
var p = [];
p[0] = [1,1,1,1];