2012-01-01 49 views
4

可能重复:
Is it faster to count down than it is to count up?下降循环比上升循环更有效吗?

我正在读一本C++的书叫C++ for You++。 (我有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

http://stackoverflow.com/questions/2823043/is-it-faster-to-count-down-than-it-is-to-count-up – Mysticial 2012-01-01 18:15:51

+0

谢谢!哇。我没有看到。我是否应该将问题作为重复来解决? – eboix 2012-01-01 18:16:28

+2

别担心,我们会为您做到这一点。很好的问题,但。 :) +1 – Mysticial 2012-01-01 18:17:04

回答

6

我预计当前的处理器上,其效果充其量是微不足道的。然而,值得注意的是处理器有专门的指令比较为零,这在逻辑上可能比与变量相比更快,并可能保存一个寄存器。因此,严格来说,它会更快,因为处理器有一个内置的特殊情况。

+0

另外,您不能保证编译器会生成类似于您所写的代码。 – 2012-01-01 18:22:47