Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript引擎是否对多维数组执行任何优化?_Javascript_Performance_V8_Ecmascript 5 - Fatal编程技术网

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

javascript引擎是否对多维数组执行任何优化?,javascript,performance,v8,ecmascript-5,Javascript,Performance,V8,Ecmascript 5,我知道现代javascript引擎在幕后创建隐藏类,因此在运行时更改对象(如果您有一大组具有相同结构的对象)是非常必要的 有人听说过二维阵列的内部优化吗 我通过以下方式创建二维数组: var map = []; for (i = 0; i < 100000; i++) { map.push(Array(2)); } 这会对性能产生显著影响吗 V8没有对多维阵列进行任何优化,因此对其性能应该没有可测量的影响 我不能代表其他JavaScript引擎,但如果您描述的模式对任何地方都有

我知道现代javascript引擎在幕后创建隐藏类,因此在运行时更改对象(如果您有一大组具有相同结构的对象)是非常必要的

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

我通过以下方式创建二维数组:

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

这会对性能产生显著影响吗

V8没有对多维阵列进行任何优化,因此对其性能应该没有可测量的影响


我不能代表其他JavaScript引擎,但如果您描述的模式对任何地方都有负面影响,我会感到惊讶。你所说的那种优化通常需要做出假设,并通过检查加以保护。考虑到JavaScript数组的高度动态性,这对于一维数组来说已经足够脆弱了;检查二维数组的任何非平凡属性可能都不值得花费。

您应该尝试一下,看看,它似乎需要单个数组的memcopy,因为它将不再能够将该数组与其余数组一起存储在连续内存中。在对内存进行碎片整理之前,它不应该中断任何其他阵列。我怀疑您是否会看到任何性能影响。
map[100].push(/* third element! */)