Daß
for i := irgendwas downto 0 do
oftmals schneller ist, als ein
for i := 0 to irgendwas do
,
liegt nicht an der Richtung, sondern meistens nur daran, daß das Ende hartecodet werden kann und keine Variable zwischengespeichert/ausgewertet werden muß.
Denn bei
for i := -irgendwas to 0 do
und
for i := 0 downto -irgendwas do
wäre es praktisch andersrum.
PS: Ohne Optimierung entspricht diese For-Schleife
Delphi-Quellcode:
for i := 0 to xxx do begin
...
end;
intern jender While-Schleife.
Delphi-Quellcode:
i := 0;
Ende := xxx; // Dieses hier ist auch der Grund, warum man Löschen besser rückwärts erledigt.
while xxx <= Ende do begin
...
Inc(i);
end;
Nja, eigentlich eher dem
Delphi-Quellcode:
i := 0;
Ende := xxx; // Dieses hier ist auch der Grund, warum man Löschen besser rückwärts erledigt.
if i <= Ende then
repeat
...
Inc(i);
until xxx = Ende; // = und nicht >=
Aber das fällt kaum auf, außer man manipuliert an der Schleifenvariable, um z.B. etwas ala
for i := 0 to 9 step 3 do
basteln, denn bei
0 to 10
landet man quasi in einer Endlosschleife, da die 10 übersprungen wird.