数组数组或对象数组

时间:2012-06-22 18:09:23

标签: javascript

使用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 个答案:

答案 0 :(得分:0)

10,000个元素的四个数组在内存方面可能更好,因为你只存储四个复杂对象(数组)然后存储40,000个整数 - 另一种方式是存储10,000个数组和40,000个整数(每个数组4个) )。

答案 1 :(得分:0)

选项2. 4个对象(数组也是对象)与10001个对象。

答案 2 :(得分:0)

我的猜测是,纯粹从位和字节的角度来看,单个多维数组的占用空间最小:

var p = [];
p[0] = [1,1,1,1];

答案 3 :(得分:0)

我实际上使用Google Chrome任务管理器测试了这两个选项,该管理器显示了有关打开的标签(Shift+ESC)的信息,虽然这可能不是100%准确,但它确实显示出显着的差异:

对于第一个选项,创建一个包含10,000个元素的数组,每个元素都是一个具有4个属性的对象,启动数组后内存使用率大约为 10MB

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

部分内存使用量跳转可能与创建和内部浏览器内容的实际处理有关,但关键是 - 按预期 - 创建对象会为您提供更多的数据开销存储