首页 > 编程语言 > 详细

JS 数组求和方法与性能比较

时间:2020-06-14 15:33:27      阅读:43      评论:0      收藏:0      [点我收藏+]

JS 数组求和方法与性能比较

eval 函数

function sum(arr) {
  return eval(arr.join(‘+‘))
}

for/forEach 循环

function sum(arr) {
  let res = 0
  for (let i = 0, len = arr.length; i < len; i++) {
    res += arr[i]
  }
  return res
}

function sum(arr) {
  let res = 0
  arr.forEach(i => res += i)
  return res
}

递归 Array.prototype.slice

function sum(arr) {
  const len = arr.length
  switch (len) {
    case 0:
      return 0
    case 1:
      return arr[0]
      break
    default:
      return arr[0] + sum(arr.slice(1));
  }
}

Array.prototype.reduce

function sum(arr) {
  return arr.reduce((curSum, curItem) => curSum + curItem)
}

执行效率

参数生成

const oriArr = Array.from(new Array(100000).keys())

运行测试

console.time(‘数组求和方法耗时测试‘)
sum(oriArr)
console.timeEnd(‘数组求和方法耗时测试‘)
统计 ms / 1k ms / 10k ms / 100k
eval 函数 / / 30.312744140625
for 循环 / / 0.14599609375
forEach 循环 / / 2.650146484375
递归 1 / 卡死
reduce / / 2.1220703125

以上统计结果图一乐,实际运行耗时和电脑配置相关,不过也大致能得出一个结论,for 循环执行效率最高,递归最差,而且会产生大量堆栈导致报错甚至卡死

JS 数组求和方法与性能比较

原文:https://www.cnblogs.com/xzdm/p/13124983.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!