Hallo,
habe mir mal Gedanken über die Geschwindigkeitsunterschiede der verschiedenen Schleifen gemacht.
Habe diese mit folgendem Code getestet
Delphi-Quellcode:
procedure TMain.BtnForClick(Sender: TObject);
var Start, Stop, c : TLargeInteger;
i, x : Integer;
begin
QueryPerformanceFrequency(c);
QueryPerformanceCounter(Start);
x := 1;
for i := 1 to 2147483647 do x := x + 1;
QueryPerformanceCounter(Stop);
Label1.Caption := Format('Time: %g s',[(Stop-Start)/c]);
end;
//------------------------------------------------------------------------------
procedure TMain.BtnWhileClick(Sender: TObject);
var Start, Stop, c : TLargeInteger;
i, x : Integer;
begin
QueryPerformanceFrequency(c);
QueryPerformanceCounter(Start);
x := 1;
while x < 2147483647 do x := x + 1;
QueryPerformanceCounter(Stop);
Label2.Caption := Format('Time: %g s',[(Stop-Start)/c]);
end;
//------------------------------------------------------------------------------
procedure TMain.BtnRepeatClick(Sender: TObject);
var Start, Stop, c : TLargeInteger;
i, x : Integer;
begin
QueryPerformanceFrequency(c);
QueryPerformanceCounter(Start);
x := 1;
repeat
x := x+1;
until (x = 2147483647);
QueryPerformanceCounter(Stop);
Label3.Caption := Format('Time: %g s',[(Stop-Start)/c]);
end;
Denkt Ihr es ist fair, dass auf diese Art zu vergleichen?
Im Anhang der komlette Source und ein ScreenShot.