如果我运行以下程序,然后在 sum+=arr[i][j] 中交换 i 和 j 后再次运行它,则执行时间非常不同,即 9.8 秒与交换前的 2.7 秒相比。我只是不明白为什么会这样。有人可以告诉我为什么会这样吗?
#include<iostream>
#include<time.h>
using namespace std;
int main()
{
int long sum=0;
int size = 1024;
clock_t start, end;
double msecs;
start = clock();
int **arr = new int*[size];
for (int i = 0; i < size; i++)
{
arr[i] = new int[size];
}
for(int kk=0; kk<1000; kk++)
{
sum = 0;
for (int i = 0; i < size; i++)
{
for (int j = 0; j < size ; j++)
{
sum += arr[i][j];
}
}
}
end = clock();
msecs = ((double) (end - start)) * 1000 / CLOCKS_PER_SEC;
cout<<msecs<<endl<<endl;
return 0;
}