javascript引擎是否执行多维数组的任何优化?

时间:2016-07-05 15:23:40

标签: javascript performance v8 ecmascript-5

我知道现代javascript引擎会在幕后创建隐藏类,因此它not recommended可以在运行时更改对象(如果你有大量的对象具有相同的对象)结构体)。

有没有人听说过二维数组的内部优化?

我用这种方式创建了一个二维数组:

var map = [];
for (i = 0; i < 100000; i++) {
    map.push(Array(2));
} 

我打算打破这样漂亮的结构:

map[100].push(/* third element! */)

这会对性能产生巨大影响吗?

1 个答案:

答案 0 :(得分:0)

V8不对多维数组进行任何优化,因此对那里的性能不应产生可测量的影响。

我无法代替其他JavaScript引擎,但如果您所描述的模式在任何地方产生负面影响,我会发现它会令人惊讶。您正在谈论的那种优化通常需要做出假设并用支票来保护它们。鉴于JavaScript数组的高度动态性,这对于一维数组来说是脆弱的;检查二维数组的任何非平凡属性可能都不值得花费。