JavaScript引擎是否对多维数组执行任何优化

Do javascript engines perform any optimization of multidimentional arrays?

本文关键字:数组 执行 任何 优化 引擎 是否 JavaScript      更新时间:2023-09-26

我知道现代JavaScript引擎在幕后创建了隐藏的类,所以不建议在运行时更改对象(如果你有大量具有相同结构的对象)。

有没有人听说过二维阵列的内部优化?

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

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

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

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

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

V8 不会对多维数组进行任何优化,因此对性能应该没有可衡量的影响。

我不能代表其他 JavaScript 引擎,但如果你描述的模式在任何地方都有负面影响,我会感到惊讶。您正在谈论的优化类型通常需要做出假设并通过检查来保护它们。鉴于 JavaScript 数组的高度动态特性,这对于一维数组来说已经足够脆弱了;检查二维数组的任何非平凡属性可能不值得付出代价。