比较操作 < 比 <= 更快?在 C++ 中操作符的选择会影响性能吗?
大家好!我是一名 C++ 初学者,有一个问题困扰我好几天了。我在编写带条件的循环时经常思考:`i < n` 和 `i <= n` 之间是否存在性能差异?例如,在汇编层面,这些操作可能以不同的方式执行。我听说在老式处理器上,“小于”比较可能比“小于或等于”更快,因为后者需要额外的相等性检查。但在 2024 年的今天,这仍然重要吗?
以下是我关心的一个简单代码示例:
```cpp
int sum = 0;
for (int i = 0; i < 1000000; ++i) {
sum += i;
}
```
对比
```cpp
int sum = 0;
for (int i = 0; i <= 999999; ++i) {
sum += i;
}
```
两个循环做的事情相同,但第一个使用了 `<`,第二个使用了 `<=`。编译器会优化这一点吗?还是说我应该总是优先选择其中一个操作符?我特别想知道这在现代 x86-64 和 ARM 处理器上是如何工作的。也许在某些情况下确实存在差异。