【问题标题】:Are descending loops more efficient than ascending loops? [duplicate]下降循环比上升循环更有效吗? [复制]
【发布时间】:2012-01-31 10:50:46
【问题描述】:

可能重复:
Is it faster to count down than it is to count up?

我正在阅读一本名为 C++ for You++ 的 C++ 书籍。 (我有 1998 年的版本。)

在关于蒙特卡洛方法的章节中,有一段用于计算定积分的代码:

for(n = nPoints; n > 0; n--) {                    // A loop that goes down to
    x = a + double(rand()) * ((b-a) / RAND_MAX); // 0 is slightly more efficient.
    y = ...
    ... // if (y <= f(x)) increment count
    ...
}

我的问题不是关于代码,而是关于评论:

下降到 0 的循环效率略高。

这是真的吗??????

为什么下降到零的循环比上升循环更有效?

n,循环计数器,甚至没有在循环中使用!

同样,这不是一个紧迫的问题。我只是好奇。我可能偶然发现了一种让我的程序更高效的方法!

【问题讨论】:

  • 谢谢!哇。我没有看到那个。我应该以重复的形式结束我的问题吗?
  • 别担心,我们会为您解决的。很好的问题。 :) +1

标签: c++ performance loops


【解决方案1】:

我希望在当前的处理器上,这种影响最多可以忽略不计。但是,值得注意的是,处理器具有与零比较的专用指令,这在逻辑上可能比与变量比较更快,并且可能会节省寄存器。因此,严格来说,它会更快,因为处理器有一个内置的特殊情况。

【讨论】:

  • 另外,您无法保证编译器会生成与您编写的代码一样的代码。
猜你喜欢
  • 2012-07-18
  • 2016-04-15
  • 1970-01-01
  • 2019-03-21
  • 2019-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
相关资源
最近更新 更多