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

Memory usage and speed of objects vs arrays in javascript

本文关键字:速度 内存 对象 数组 javascript      更新时间:2023-09-26

哪个会占用更多内存,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:给出的分数是非官方的,是我个人对这两个字符的看法

我有一张测试的照片,但正如Felix指出的那样,它被钉住了。这是更正确的:http://jsperf.com/sparse-objects/3上面说数组查找速度快20%

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

// see code in fiddle

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

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

// see code in fiddle
http://jsfiddle.net/ryanwheale/HbHxv/4/

我喜欢第二个选项,因为你可以看到在开发工具中使用Chrome的时间轴每个方法占用多少内存。开始录音,点击几次"对象"按钮,等待几秒钟,然后点击几次"数组"按钮。您将看到对象所消耗的内存比数组所使用的内存多。在执行时间方面,数组似乎也有一点优势。然而,我们谈论的是一百万件……这是非常不现实的