let arr = []
for(let i = 0; i < 11308608; i++){
arr.push(Math.random() * 1000)
}
console.time('load')
a = new Float32Array(arr)
console.timeEnd('load')
打开一个新的空白页,打开控制台,然后执行此代码,通常在几十毫秒内,不超过100ms。
但是,它通常用于1500毫秒以上的项目中。
之所以找到这个,是因为该项目需要加载更多3D资源。在优化性能时,我发现静态页面演示中的优化效果非常好,而在项目中使用时效果却很差。
基本上,在演示中需要10秒钟,而在项目中要超过30秒钟。
经过大量的努力,我们在three.module.js:40591
中找到了以下代码:
const typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );
这是写入数组时的耗时异常。
在尝试删除VUE,删除所有依赖项并仅留下空白页之后,上述测试代码的控制台执行仍然无效。
在构建项目中,删除所有JS文件,以避免耗时的异常。
在React项目上执行此代码也会导致耗时的异常。
根据初步判断,它是webpack,但尚无法解决。