Fastest way to read/store lots of multidimensional data? (Java)
Posted
by RemiX
on Stack Overflow
See other posts from Stack Overflow
or by RemiX
Published on 2010-06-03T14:42:12Z
Indexed on
2010/06/03
14:44 UTC
Read the original article
Hit count: 135
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?
© Stack Overflow or respective owner