Schnellste Möglichkeit zum Lesen/speichern viele mehrdimensionale Daten? (Java)

Ich habe drei Fragen zu drei geschachtelte Schleifen:

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
        }
    }
}

Und ich speichern müssen alle berechneten Werte. Mein standard-Ansatz wäre die Verwendung eines 3D-array:

values[x][y][z] = 1; //test value

aber dieser entpuppt sich langsam: es dauert 192 ms bis komplette diese Schleife, wo eine einzelne int-Zuweisung

int value = 1; //test value

dauert nur 66 ms.

1) Warum ist ein array, also relativ langsam?
2) Und warum wird es sogar langsamer, wenn ich diese in der inneren Schleife:

values[z][y][x] = 1; //(notice x and z switched)

Diese dauert mehr als 4 Sekunden!

3) am wichtigsten: Kann ich mit einer Daten-Struktur, die ist so schnell wie die Zuordnung einer einzelnen ganzen Zahl, aber speichern kann so viel Daten wie der 3D-array?

InformationsquelleAutor RemiX | 2010-06-03
Schreibe einen Kommentar