javascript中内存使用率和对象与数组的速度

时间:2013-01-16 10:02:19

标签: javascript arrays object

什么将使用更多内存,items1每个项目是一个数组或items2每个项目是一个对象:

var items1=[['James Bond',8,40],
...,
['Superman',9999,36]];
var items2=[{Name,'James Bond',strength:8,coolness:40},
...,
{Name,'Superman',strength:9999,coolness:36}];

哪种方法可以获取数据search1或search2?

var search1=items[432][2];
var search2=items2[432]["coolness"];

PS:给定的分数是非正式的,我个人对2个字符的看法

第二次编辑:我有一张测试图片,但正如菲利克斯指出的那样。这更正确: http://jsperf.com/sparse-objects/3表示数组查找速度提高了20%。

1 个答案:

答案 0 :(得分:3)

我不是最好的编写单元测试,但这是一个简单的例子,它告诉我没有太大的区别:

// see code in fiddle

http://jsfiddle.net/ryanwheale/HbHxv`

这是另一个有更多输出和控制的东西:

// see code in fiddle

http://jsfiddle.net/ryanwheale/HbHxv/4/

我喜欢第二个选项,因为您可以通过开发工具中的Chrome时间轴查看每种方法占用的内存量。开始录制,并多次单击“对象”按钮,等待几秒钟,然后多次单击“阵列”按钮。您将看到对象消耗的内存大于Arrays使用的内存。在执行时间方面,阵列似乎也略微受到青睐。但是,我们谈论的是一百万件......这是非常不现实的。