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

循环反向真的更快吗?

段干河
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'

  • 在C语言中,我有一个任务,我必须做乘法、求逆、移位、加法等,用巨大的矩阵分配为二维数组(数组的数组)。 我找到了gcc标志。如果我理解正确,这将自动展开所有循环,而无需程序员进行任何努力。 我的问题是: a) gcc是否包括这种带有各种优化标志的优化,如,等。? b)我必须在我的代码中使用任何s来利用循环展开,还是自动识别循环? c)如果展开提高了性能,为什么默认情况下不启用此选项? d) 为了以