下行循环比上升循环更有效吗?

时间:2012-01-01 18:13:38

标签: c++ performance loops

  

可能重复:
  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 个答案:

答案 0 :(得分:6)

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