最快循环10万个长度的数组 有比 for循环 快的吗?

发布于 2022-09-12 02:21:15 字数 584 浏览 15 评论 0

let arr = [20,19,30,50,。。。。] // 长度是10万
// 把每一项都减去7 ,怎么最快的计算如下转换? 有什么奇淫巧技吗 ,位运算之类的 byteArray 长度10万 以上 的图片数据

                          let byteArray = new Uint8Array(arrayBuffer);
                          let newByteArray =  new Array(byteArray.length);
                          for(let i = 0 ;i < byteArray.length;i++){
                              newByteArray[i] = byteArray[i] - 7
                          }
                          let arrayBuffer2 = new Uint8Array(newByteArray)
                          
                          

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

平定天下 2022-09-19 02:21:15
let byteArray = new Array(1000000).fill(20);

console.time('byteArray');
let newByteArray = new Array(byteArray.length);
for (let i = 0; i < byteArray.length; i++) {
  newByteArray[i] = byteArray[i] - 7;
}
console.timeEnd('byteArray');

console.time('byteArray1');
let newByteArray1 = Array.from(byteArray, v => v - 7);
console.timeEnd('byteArray1');

console.time('byteArray2');
let newByteArray2 = byteArray.map(v => v - 7);
console.timeEnd('byteArray2');

console.time('byteArray3');
let newByteArray3 = eval('([' + byteArray.join('-7,') + '])');
console.timeEnd('byteArray3');

做了几个尝试,除了map的成绩跟for相比接近,其他都有明显差距

荒岛晴空 2022-09-19 02:21:15

知道数组长度的话,可以把数组拆成多个子数组,多线程同步进行计算,最后把结果拼接起来

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文