Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#19

AW: Geschwindigkeit von Schleifen

  Alt 10. Dez 2014, 15:20
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat