Fastest way to read/store lots of multidimensional data? (Java)
- by RemiX
I have three questions about three nested loops:
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
}
}
}
And I need to store all computed values. My standard approach would be to use a 3D-array:
values[x][y][z] = 1; // test value
but this turns out to be slow: it takes 192 ms to complete this loop, where a single int-assignment
int value = 1; // test value
takes only 66 ms.
1) Why is an array so relatively slow? 2) And why does it get even slower when I put this in the inner loop:
values[z][y][x] = 1; // (notice x and z switched)
This takes more than 4 seconds!
3) Most importantly: Can I use a data structure that is as quick as the assignment of a single integer, but can store as much data as the 3D-array?