Avatar ·

比较操作 < 比 <= 更快?在 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 处理器上是如何工作的。也许在某些情况下确实存在差异。