问答

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

作者:admin 2021-09-09 我要评论

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

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

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)
                          
                          
###
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相比接近,其他都有明显差距

###

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

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 最快循环10万个长度的数组 有比 for循

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

  • 为什么js计算10*(9/100)=0.89999999999

    为什么js计算10*(9/100)=0.89999999999

  • element-ui里面的校验问题

    element-ui里面的校验问题

  • 判断是不是数组问题(arr.constructor

    判断是不是数组问题(arr.constructor

腾讯云代理商
海外云服务器