8

什么会使用更多的内存,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%。

4

1 回答 1

5

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

// see code in fiddle

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

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

// see code in fiddle

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

我喜欢第二个选项,因为您可以通过在开发工具中使用 Chrome 的时间轴来查看每种方法占用多少内存。开始录制,并单击“对象”按钮数次,等待几秒钟,然后单击“数组”按钮数次。您会看到对象消耗的内存超过了数组使用的内存。就执行时间而言,数组似乎也有一点优势。然而,我们谈论的是一百万个项目......这是非常不现实的。

于 2013-01-17T22:20:47.080 回答