Object.keys执行时

时间:2014-05-17 12:20:36

标签: javascript node.js object

我使用Object.keys方法对我的设置(i7 @ 3.07GHz,6GB ram)做了一些基准测试,并发现了一些有趣的结果。

这是我尝试过的代码:

var foo = {};

for (var i = 0; i < 600000; i++) {
    foo[i] = true;
}

console.time("foobar");

var keys = Object.keys(foo);

console.timeEnd("foobar");

我用不同的值替换xxx,从10 000开始,最高达到1 000 000.当我达到400k时,执行时间大约是121ms,500k~130ms。但随后在600k时它跃升至250ms。为什么这样做?

1 个答案:

答案 0 :(得分:1)

您可以检查对象 foo 使用的how much memory

  1. i = 600000 =&gt; foo 对象占用大约2.4 MB

  2. i = 500000 =&gt; foo 对象占用2MB左右

  3. 因此,您的CPU缓存大小可能大约为2MB,当您需要的内存超出其处理能力时,性能会非线性降低(因为它与内存消耗小于2 MB呈线性关系)