如果[,]是C#中的多维数组,那么[0,1]或[1,0]会在内存中的[0,0]之后立即出现。这对于了解迭代整个多维数组的顺序非常重要。如果一个错误,则会创建常量缓存未命中,错误的方式应该非常慢。
那是
for (int i = 0; i < count1; ++ i ) {
for (int j = 0; j < count2; ++ j ) {
do something with a[i,j]
}
}
应该具有与
非常不同的性能for (int j = 0; j < count2; ++ j ) {
for (int i = 0; i < count1; ++ i ) {
do something with a[i,j]
}
}
哪一个很快,哪一个很慢取决于我的问题的答案。
答案 0 :(得分:0)
记忆结构有点像[0,0] [0,1] [0,2] [1,0] [1,1] [1,2]
我的建议外环应该遍历第一维,内环应该去第二维。它更简单......