如何找出哪个嵌套for循环更好?

Jat*_*tin 1 c c++ loops nested-loops

有人问我一个问题:在以下两种情况中,哪一项是最快的:

情况1:假设int count = 0;

for (int i = 0; i < 10; i++)
{
    for (int j = 0; j < 5; j++)
    {
        count++;
    }
}
Run Code Online (Sandbox Code Playgroud)

情况2:假设int count = 0;

for (int i = 0; i < 5; i++)
{
    for (int j = 0; j < 10; j++)
    {
        count++;
    }
}
Run Code Online (Sandbox Code Playgroud)

在这两个场景中,计数的最终值将为50.但我不确定哪一个会更快?我认为CASE II更快但不确定......

如果有人能对它有所了解,那就太好了.哪个更快,为什么?

tit*_*tus 10

这是我能想到的最重要的例子,你在哪里重复哪个变量

int array[n][m];
//fast
for (int i=0;i<n;i++)
{ for(int j=0;j<m;j++)
  { count+=array[i][j];
  }
}
//slow
for (int i=0;i<m;i++)
{ for(int j=0;j<n;j++)
  { count+=array[j][i];
  }
}
Run Code Online (Sandbox Code Playgroud)

第二个是较慢的,因为你不是一个接一个地迭代内存中的位置,而是因为你m一次按位置跳转.处理器缓存位于访问位置之后的存储器位置.