Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.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_Arrays - Fatal编程技术网

Javascript 在不同浏览器中创建特定大小的空数组时性能较慢

Javascript 在不同浏览器中创建特定大小的空数组时性能较慢,javascript,arrays,Javascript,Arrays,我注意到在MacOSX(10.13.4)系统上使用Chrome(85)、Firefox(79)和Safari(11.1)中的Array(length)创建空阵列的特殊性能统计 这是我的测试脚本 console.time('Array(length)'); var len_int = 1; var test_arr = Array(len_int); console.timeEnd('Array(length)'); console.log('test_arr.length =', test_ar

我注意到在MacOSX(10.13.4)系统上使用Chrome(85)、Firefox(79)和Safari(11.1)中的
Array(length)
创建空阵列的特殊性能统计

这是我的测试脚本

console.time('Array(length)');
var len_int = 1;
var test_arr = Array(len_int);
console.timeEnd('Array(length)');
console.log('test_arr.length =', test_arr.length);
我正在尝试从1到100000000[10亿]的各种
len_int
。以下是我得到的数据:

CHROME

Array(length) - 1: 0.018310546875 ms
Array(length) - 10: 0.014892578125 ms
Array(length) - 100: 0.01171875 ms
Array(length) - 1000: 0.0068359375 ms
Array(length) - 10000: 0.011962890625 ms
Array(length) - 100000: 0.187744140625 ms
Array(length) - 1000000: 1.826904296875 ms
Array(length) - 10000000: 18.211181640625 ms
Array(length) - 100000000: 0.026123046875 ms
Array(length) - 1000000000: 0.0126953125 ms
FIREFOX

Array(length) - 1: 1ms - timer ended
Array(length) - 10: 1ms - timer ended
Array(length) - 100: 0ms - timer ended
Array(length) - 1000: 0ms - timer ended
Array(length) - 10000: 2ms - timer ended
Array(length) - 100000: 1ms - timer ended
Array(length) - 1000000: 0ms - timer ended
Array(length) - 10000000: 0ms - timer ended
Array(length) - 100000000: 1ms - timer ended
Array(length) - 1000000000: 1ms - timer ended
SAFARI

Array(length) - 1: 0.006ms
Array(length) - 10: 0.028ms
Array(length) - 100: 0.011ms
Array(length) - 1000: 0.009ms
Array(length) - 10000: 0.031ms
Array(length) - 100000: 0.252ms
Array(length) - 1000000: 1.663ms
Array(length) - 10000000: 19.373ms
Array(length) - 100000000: 696.767ms
Array(length) - 1000000000: 0.008ms
奇怪的是,Chrome在1000000[1.8ms]和10000000[18ms]时会破坏亚毫秒的性能,而在更高的阵列中,性能会下降到亚毫秒以下。Safari的性能稍差,从1000000[19ms]到100000000[696ms],然后下降到100000000[0.008ms]。Firefox在性能上似乎相当一致

为什么会出现这种反常现象?在不丧失性能优势的情况下,是否有修复或替代方法来完成相同的任务

我应该指出,我已经多次运行这个基准测试,每次都看到这个异常。我还用Safari(通过BrowserStack)在iPhone7上运行了它,并目睹了同样的异常情况


我这样问是因为我使用
Array(length)
来加速一些利用阵列的脚本,但是对于大小在1000000到10000000之间的阵列,Chrome和Safari的性能提升已经消失了。

你不能单次运行微基准,由于其他正在运行的进程和编译器优化,错误太大


至少,您应该让代码运行大量次,并确保实际使用了数组,这样编译器就无法对其进行优化。

谢谢。我确实多次运行基准测试。我会在编辑问题时提到这一点。