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?