JavaScript中哪个循环最快?
#javascript #node #性能 #循环

我很想知道在看到C#的类似帖子后,在JS中表现速度的快速循环,所以我写了一个快速脚本以检查。

Image description

在此测试中,我尝试了四个不同的循环语法,其中每个循环只是将计数器变量递增10^8次,并且每个循环跑了五次以获得平均时间。这是结果:

  • for:1616.2毫秒
  • foreach:1488.6毫秒
  • 用于循环(带索引):282.4毫秒
  • 用于循环(带有缓存阵列长度):278.8毫秒

有趣的是,对于非常小的阵列(<10^3个元素),它并没有真正的区别。但是,对于10^3至10^6的大小,结果有点令人惊讶。

1000迭代的结果:

{
  "forOf": 0.2,
  "forLoop": 0,
  "forEach": 0,
  "forLoopCached": 0
}

100,000迭代的结果:

{
  "forOf": 5.4,
  "forLoop": 2,
  "forEach": 0.4,
  "forLoopCached": 0.6
}

因此,当涉及到<10^6数组时,经典的forEach似乎很好。

我个人曾经使用过(最慢的)语法,因为它似乎是最简单的语法,现在我们知道我要开始使用哪个语法!

这是脚本:https://github.com/siddiqus/useful-scripts/blob/master/for-loop-benchmark.js

P.S。大家节日快乐!