c++ - 下降循环比上升循环更有效吗?

标签 c++ performance loops

<分区>

Possible Duplicate:
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
    ...
}

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

A loop that goes down to 0 is slightly more efficient.

这是真的吗????

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

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

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

最佳答案

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

关于c++ - 下降循环比上升循环更有效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8694635/

相关文章:

android - 在 NestedScrollView 中使用 RecyclerView 时性能不佳

java - 如何提示用户仅输入他们可以选择的三个选项之一,并在输入错误时显示错误消息

c++ - dynamic_cast 发出 : typeid object is not equal, 但名称相同

c++ - 对 std::vector::iterator 使用 vs. typedef

c++ - 如何知道 CWnd 滚动条是否可见?

php - 使用foreach比较两个表的结果

c - 从数组中打印随机选择

c++ 支持模板元编程中的最后一次调用优化

mysql - MySQL 中的用户 ID 与用户名性能

sql-server - SQL Server 查询 - 没有按预期执行,没有像我想象的那样表现