Einzelnen Beitrag anzeigen

Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#28

Re: Gibt es ein Schnelleres verfahren als Min?

  Alt 18. Jun 2005, 12:42
Jetzt natürlich noch der Vergleichstest mit inline :
Delphi-Quellcode:
function Min(const A, B: Integer): Integer; inline;
begin
  if A < B then
    Result := A
  else
    Result := B;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  Start, Stop, i, a, b, Outcome: Integer;
begin
  Start := GetTickCount;
  for i := 0 to 1000000000 do
  begin
    a := Random(245);
    b := Random(245);
    Outcome := Min(a, b);
  end;
  Stop := GetTickCount;
  ShowMessage(Format('Min inline: %f s',[(Stop - Start) / 1000]));
  Start := GetTickCount;
  for i := 0 to 1000000000 do
  begin
    a := Random(245);
    b := Random(245);
    if a < b then
      Outcome := a
    else
      Outcome := b;
  end;
  Stop := GetTickCount;
  ShowMessage(Format('Selfmade: %f s',[(Stop - Start) / 1000]));
end;
Zitat:
---------------------------
Project1
---------------------------
Min inline: 48,77 s
---------------------------
OK
---------------------------
Zitat:
---------------------------
Project1
---------------------------
Selfmade: 51,84 s
---------------------------
OK
---------------------------
Das hat mich jetzt doch etwas überrascht .
Obwohl die Testzeiten ziemlich unterschiedlich ausfielen (Inline: 38 - 50 s), war die Inline Methode doch immer 3 - 7 Sekunden schneller.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat