【发布时间】:2011-02-27 08:38:49
【问题描述】:
我有三个关于三个嵌套循环的问题:
for (int x=0; x<400; x++)
{
for (int y=0; y<300; y++)
{
for (int z=0; z<400; z++)
{
// compute and store value
}
}
}
我需要存储所有计算值。我的标准方法是使用 3D 数组:
values[x][y][z] = 1; // test value
但事实证明这很慢:完成这个循环需要 192 毫秒,其中单个 int 赋值
int value = 1; // test value
仅需 66 毫秒。
1) 为什么数组相对较慢?
2)当我把它放在内部循环中时,为什么它会变得更慢:
values[z][y][x] = 1; // (notice x and z switched)
这需要超过 4 秒!
3) 最重要的是:我可以使用一个数据结构,它与分配单个整数一样快,但可以存储与 3D 数组一样多的数据吗?
【问题讨论】:
标签: java performance data-structures arrays multidimensional-array