相关疑难解决方法(0)

Java:多维数组与一维数组

例如:

  • 一个) int [x][y][z]

    VS

  • b) int[x*y*z]

最初我认为我会选择a)以简化

我知道Java不像C那样在内存中线性存储数组.但这对我的计划有什么影响?

java arrays multidimensional-array

27
推荐指数
2
解决办法
2万
查看次数

数组数组与多维数组的性能比较

当我在大学里使用C++时,我被告知尽可能使用多维数组(特此是MDA),因为它表现出更好的内存局部性,因为它分配在一个大块中.另一方面,阵列阵列(AoA)被分配在多个较小的块中,可能散布在物理存储器中的任何位置,无论何处发现空位.

所以我想第一个问题是:这是一个神话,还是值得关注的建议?

假设它是后者,那么接下来的问题就是如Java这样没有真正MDA的语言.当然,用1DA模拟MDA并不难.从本质上讲,具有MDA的语言的语法糖可以实现为对没有MDA的语言的库支持.

这值得努力吗?对于像Java这样的语言来说,这是一个太低的优化问题吗?我们应该放弃数组并使用Lists甚至原语吗?


另一个问题:在Java中,一次分配AoA(new int[M][N])可能会产生不同的内存分配(而不是分层次地)(new int[M][]; for (... new int[N])

java arrays performance multidimensional-array

7
推荐指数
1
解决办法
6702
查看次数