为什么处理已排序数组比未排序数组更快?
大家好!我是一名初学C++的开发者,在优化代码时遇到了一个非常奇怪的问题。我有一个简单的循环,用于对数组元素求和,但只对大于某个阈值的元素求和。我注意到,如果数组已排序,代码执行速度比未排序时快几倍。以下是示例代码:
```cpp
#include
#include
#include
#include
int main() {
const int SIZE = 100000;
std::vector data(SIZE);
// 用随机数填充数组
for (int i = 0; i < SIZE; ++i) {
data[i] = rand() % 256;
}
// 为第一个测试排序数组
std::vector sorted_data = data;
std::sort(sorted_data.begin(), sorted_data.end());
long long sum_sorted = 0;
long long sum_unsorted = 0;
// 测量已排序数组的时间
auto start = std::chrono::high_resolution_clock::now();
for (int i =