我知道现代javascript引擎会在幕后创建隐藏类,因此它not recommended可以在运行时更改对象(如果你有大量的对象具有相同的对象)结构体)。
有没有人听说过二维数组的内部优化?
我用这种方式创建了一个二维数组:
var map = [];
for (i = 0; i < 100000; i++) {
map.push(Array(2));
}
我打算打破这样漂亮的结构:
map[100].push(/* third element! */)
这会对性能产生巨大影响吗?
答案 0 :(得分:0)
V8不对多维数组进行任何优化,因此对那里的性能不应产生可测量的影响。
我无法代替其他JavaScript引擎,但如果您所描述的模式在任何地方产生负面影响,我会发现它会令人惊讶。您正在谈论的那种优化通常需要做出假设并用支票来保护它们。鉴于JavaScript数组的高度动态性,这对于一维数组来说是脆弱的;检查二维数组的任何非平凡属性可能都不值得花费。