Hallo zusammen,
ich möchte eine Zahl in einem Bereich begrenzen und dafür gibt es ja EnsureRange:
Delphi-Quellcode:
function EnsureRange( const AValue, AMin, AMax : Single ) : Single;
function EnsureRange(const AValue, AMin, AMax: Single): Single;
begin
assert(AMin <= AMax);
if AValue < AMin then
Result := AMin
else if AValue > AMax then
Result := AMax
else
Result := AValue;
end;
Die ist aber nicht
inline
und hat noch den
assert
Wobei die Funktionen Min/Max
inline
sind und auf den
assert
verzichten.
Delphi-Quellcode:
function Min(const A, B: Single): Single; overload; inline;
function Min(const A, B: Single): Single;
begin
if A < B then
Result := A
else
Result := B;
end;
Ich frage mich welche Version performanter ist, wenn ich auf einen
assert
verzichten kann und das auch auf allen Platformen benutzen möchte:
Delphi-Quellcode:
Result := EnsureRange( 0.0, 1.0, AValue );
// oder
Result := Min( 0.0, Max( 1.0, AValue ) );
Es sollte eigentlich EnsureRange sein, ich bin mir da aber nicht sicher wie und ob die verschiedenen Compiler das optimieren.
Vielleicht hat da jemand einen Hinweis für mich ?