Einzelnen Beitrag anzeigen

xcs

Registriert seit: 31. Mär 2008
14 Beiträge
 
#1

Zugriffsgeschwindigkeit auf mehrdimensionale Arrays

  Alt 26. Apr 2009, 18:32
Hallo!

Ich führe numerische Berechnungen durch und bin auf folgendes Phänomen gestoßen, das ich mir auf Anhieb nicht gleich erklären kann:

ich definiere ein statisches Array:

var mein_Array : array[0..x,0..y,0..z,0..x,0..y,0..z] of double; Ich kann in mein_Array also (x+1)(x+1)(y+1)(y+1)(z+1)(z+1) Gleitkomma-Werte abspeichern.
So weit, so gut.
Es wird im Programm folgende Schleife durchlaufen:

Delphi-Quellcode:
for i:=0 to 50 do for j:=0 to 2 do for k:=0 to 2 do
begin
for l:=0 to 50 do for m:=0 to 2 do for n:=0 to 2 do
begin
//mache irgendwas, bei dem auf mein_Array[i,j,k,l,m,n] zugegriffen wird
end;
end;
Was mich jetzt wundert, ist folgendes:
Wenn x=50, y=14, z=14, dann wird die Schleife um ein mehrfaches (ca. Faktor 5-10) langsamer durchlaufen, als wenn x=1274, y=2, z=2.
Die Anzahl der Zugriffe ist exakt die selbe und auch die Arraygröße ist exakt die gleiche.

Woran liegt das?
  Mit Zitat antworten Zitat