我正在阅读一本名为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
甚至不在循环中使用!
同样,这不是一个迫切的问题。我只是好奇。我可能偶然发现了让我的程序更有效率的方法!
答案 0 :(得分:6)
我希望在当前的处理器上,效果最多可以忽略不计。但是,值得注意的是,处理器具有专用指令以便与零进行比较,这在逻辑上可能比与变量的比较更快并且可能保存寄存器。因此,严格来说,它会更快,因为处理器有一个内置的特殊情况。