Forum: Object-Pascal / Delphi-Language
Delphi
by Khabarakh,
18. Jun 2005
Jetzt natürlich noch der Vergleichstest mit inline :wink: :
function Min(const A, B: Integer): Integer; inline;
begin
if A < B then
Result := A
else
Result := B;
end;
procedure TForm1.FormCreate(Sender: TObject);
Forum: Object-Pascal / Delphi-Language
Delphi
by Khabarakh,
17. Jun 2005
Zu a): Siehe oben
Zu b): Das Thema heißt ja "Gibt es ein Schnelleres verfahren als Min?", also sollten neue Funktionen nicht verboten sein :wink: . Die Möglichkeit zum "Per-Hand-Inline" habe ich auch schon genannt, ich denke auch, dass zwischen iterativer und rekursiver Methode fast kein Unterschied bestehen wird (der Compiler wird vielleicht eine Variable mehr benutzen).
Forum: Object-Pascal / Delphi-Language
Delphi
by Khabarakh,
17. Jun 2005
Counter := MinIntValue(, Counter, Counter]);
@SirThornberry: Stimmt, daran hatte ich gar nicht gedacht. Aber bei so wenig Code kann man die Funktion ja auch selbst "inlinen" .
Forum: Object-Pascal / Delphi-Language
Delphi
by Khabarakh,
17. Jun 2005
Das sollte sich aber per inline; aber wieder relativieren, oder?
Forum: Object-Pascal / Delphi-Language
Delphi
by Khabarakh,
17. Jun 2005
@Hallo_Thomas: Angenommen, der Inhalt des Arrays ist vor der Minimum-Bestimmung jedes Mal unsortiert.
MinArrayValue vergleicht nun jedes Element genau einmal. Wie soll es denn einen schnelleren Algorithmus geben, wenn er ja wohl jedes Element mindestens einmal vergleichen muss?
Forum: Object-Pascal / Delphi-Language
Delphi
by Khabarakh,
17. Jun 2005
In MinIntValue wird jedes Arrayelement einmal mit Result verglichen. Wie soll das denn (abgesehen von Assembler-Verbesserungen o.Ä.) schneller gehen?