Object.keys执行时间

我用Object.keys方法对我的设置(i7 @ 3.07GHz,6GB RAM)做了一些基准testing,并注意到一些有趣的结果。

这是我试过的代码:

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.当我来到40万时,执行时间大约是121ms,500k〜130ms。 但是在600k时跳到了250ms。 为什么这样做?

你可以检查你有多less内存 foo使用。

  1. i = 600000 => foo对象占用大约2.4 MB时

  2. = 500000 => 物体占用2MB左右

所以,你的CPU高速caching大小大概在2MB左右,当你需要更多的内存时,性能会非线性地下降(因为内存消耗小于2MB是线性的)