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.