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

标签 c# arrays multidimensional-array

如果 a[,] 是 C# 中的多维数组,a[0,1] 或 a[1,0] 是否紧跟在内存中的 a[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,1] [0,2] [1,0 ] [1,1] [1,2]
我的建议外循环应该遍历第一维,内循环应该遍历第二维。那样更简单...

关于C#内存中的多维数组排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29310131/

相关文章:

java - String.substring(i,j) 方法获取空格而不是实际字符

java - 如何获取显示的每一列的总和

php - 根据共享列值对关联行数据进行分组

c# - IEnumerable.Except 在文本框 c sharp 中显示差异

c# - EF 5 中的表值函数?

c# - 如何禁止某些单元格调整行或列的大小

arrays - 将数组插入数组

javascript - 如何在 javascript 中创建动态函数?

c# - 如何在Web应用程序中实现TCP/IP响应器 "service"

c++ - 在 C++ 中使用 boolean 值设置二维数组的值