C#内存中的多维数组排列

时间:2015-03-27 21:01:05

标签: c# arrays multidimensional-array

如果[,]是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]
  }
}

哪一个很快,哪一个很慢取决于我的问题的答案。

1 个答案:

答案 0 :(得分:0)

记忆结构有点像[0,0] [0,1] [0,2] [1,0] [1,1] [1,2]
我的建议外环应该遍历第一维,内环应该去第二维。它更简单......