Jat*_*tin 1 c c++ loops nested-loops
有人问我一个问题:在以下两种情况中,哪一项是最快的:
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 5; j++)
{
count++;
}
}
Run Code Online (Sandbox Code Playgroud)
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一次按位置跳转.处理器缓存位于访问位置之后的存储器位置.
| 归档时间: |
|
| 查看次数: |
2463 次 |
| 最近记录: |