You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript实现Σ求和函数:单for循环和多个内置方法哪个更快?

两种JavaScript Σ求和函数性能对比

结论非常明确:for循环实现的capitalSigma运行速度更快,求和区间越大二者性能差距越明显

原因主要有三点:

  • 额外内存开销:数组内置方法实现的版本首先需要用Array.from生成一份长度为求和区间长度的临时数组,调用map的时候还会生成第二份临时数组,两份数组完全是中间产物,求和结束后就要被回收。当你求和区间长度到几万、几十万的时候,光是生成这两个大数组的开销就已经远超过for循环的累加开销了。而for循环版本只用到一个累加变量,没有额外的数组内存占用。
  • 多余遍历次数:你观察到的多次遍历问题确实存在:Array.from填充数组要遍历一次,map计算func返回值要遍历一次,reduce累加还要遍历一次,总共三次全量遍历。而for循环只需要走一次,边遍历调用func边累加,完全没有多余的遍历步骤。
  • 回调函数开销:JS中函数调用本身就有固定开销,数组内置方法的每个步骤都要执行回调,多次回调的开销累加起来也远高于for循环里单次调用func的开销。

如果你确实想用数组内置方法写简洁的版本,也可以优化掉map步骤,把func的计算放到reduce里,减少一次遍历:

function 𝝨(start, stop, func) {
  return Array.from({length: (stop - start) + 1}, (_, i) => start + i)
    .reduce((sum, curr) => sum + func(curr), 0)
}

就算做了这个优化,性能还是远不如for循环版本,追求运行效率优先选for循环实现即可。

内容的提问来源于stack exchange,提问作者gurkensaas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 19:36:03