当前位置: 首页 > 面试题库 >

循环反向真的更快吗?

段干河
2023-03-14
问题内容

我已经听过好几次了。向后计数时,JavaScript循环真的更快吗?如果是这样,为什么?我已经看到了一些测试套件示例,这些示例显示了反向循环更快,但是我找不到关于原因的任何解释!

我假设这是因为循环不再需要在每次检查是否完成时都求值一个属性,而只需要检查最终的数值即可。

for (var i = count - 1; i >= 0; i--)
{
  // count is only evaluated once and then the comparison is always on 0.
}

问题答案:

不是i--比快i++。实际上,它们都一样快。

在递增循环中需要花费时间的是,每个循环都需要评估i数组的大小。在此循环中:

for(var i = array.length; i--;)

.length当您声明时i,您只评估一次,而对于此循环

for(var i = 1; i <= array.length; i++)

当您检查是否.length每次递增时i,您都会进行评估i <= array.length

在大多数情况下,您 甚至不必担心这种优化



 类似资料:
  • 问题内容: 在Java中,我通常会进行如下所示的for循环: 但是最近一位同事打了这样的字: 他说后者会更快。真的吗? 问题答案: 不,那不是真的。您可以通过定时每个循环进行大量迭代来衡量性能,但是我可以肯定它们会是相同的。 神话来自C,它被认为比C 更快,因为前者可以通过增加i然后返回来实现。后者可以通过将i的值复制到临时变量,递增i,然后返回临时变量的方式来实现。第一个版本不需要制作临时副本,

  • 我使用以下程序集和c源(分别使用fasm和gcc)将一些程序集与一些c链接起来,以测试函数调用的成本 组件: c来源: 我得到的结果令人惊讶。首先,速度取决于我链接的顺序。如果我以的形式链接,典型的输出是 但是以相反的顺序链接,我得到了一个更像的输出: 他们的不同令人惊讶,但这不是我要问的问题。(此处有相关问题) 我要问的问题是,在第二次运行中,有函数调用的循环如何比没有函数调用的循环快,调用函数

  • 所以我的理解是,增强for循环应该更慢,因为它们必须使用迭代器。。然而,我的代码提供的结果参差不齐。。(是的,我知道循环逻辑占用了循环中的大部分时间) 对于较少的迭代次数(100-1000),无论有无JIT,增强的For循环似乎都要快得多。相反,对于大量迭代(100000000),传统循环速度要快得多。这是怎么回事?

  • 我正在学习JavaScript/React。我试图在react网站上为tic-tac-toe示例创建一个简单的for循环,但到目前为止,它一直存在问题。奇怪的是,有几个映射示例,但没有for循环示例。 无论如何,对于以下各项: 当我替换"测试代码"时,这个工作 但这次失败了 第二个选项失败,因为它没有创建“单独的”onClick元素。我怎样才能使失败的例子起作用? 更新#1 更新#2我按照@Mat

  • direction(方向) 定义动画的方向。 Accepts Infos 'normal' 正方向动画 'reverse' 反方向动画 'alternate' 往返 anime({ targets: '.dir-normal', translateX: 250, easing: 'easeInOutSine' }); anime({ targets: '.dir-reverse'

  • 我想使用以下循环创建一个新列。表中只有“open”和“start”列。我想创建一个新列“startopen”,如果“start”等于1,那么“startopen”等于“open”。否则,“startopen”等于此新创建列上方行中的任何“startopen”。目前,我能够通过以下方式实现这一点: 这有效,但对于大型数据集来说非常慢。是否有任何内置函数可以更快地完成此操作?