Thema: Delphi Wie optimiert Delphi?

Einzelnen Beitrag anzeigen

Brüggendiek

Registriert seit: 13. Dez 2002
Ort: Dortmund
275 Beiträge
 
Delphi 5 Standard
 
#4
  Alt 2. Jan 2003, 23:40
Hallo!

Zitat von sakura:
Letztere ist schneller, wenn Du die Compileroption {$BOOLEVAL ON} bzw. {$B+} gesetzt hast. Standardmäßig sind diese jedoch aus.
Es ist genau umgekehrt!

Wichtiger Hinweis:
Ist der Compilerschalter B nicht gesetzt ({$B-}), werden Boolean-Ausdrücke grundsätzlich nur ausgewertet, bis das Ergebnis eindeutig ist. Bei AND beendet ein False, bei OR ein True die Auswertung.
Ist der Schalter gesetzt ($B+), wird der Ausdruck immer komplett durchlaufen.

Wenn also
Delphi-Quellcode:
function b1: Boolean;
...
function b2: Boolean;
...

begin
  if b1 and b2 then
  ...
end;
programmiert ist, wird bei B- die Funktion b2 nur aufgerufen, wenn b1 True geliefert hat! Wenn also b2 irgend etwas erledigt, was auf jeden Fall getan werden muß (z.B. beide Funktionen schliessen je eine Datei und liefern True, wenn erfolgreich), sollte B+ gesetzt sein!
Andererseite:
Delphi-Quellcode:
if (Length(satz) >= 5) and (satz [5] <> '#') then
  ..
bereitet bei B- ein kleines Problem, da satz [5] ggf. undefiniert ist! Bei Shortstrings klappt das ja noch, aber normale Strings liefern einen Absturz wegen fehlerhaftem Index. Hier stellt B+ eine Alternative dar. Ist aber irgendwie unsauber! Besser ist:
Delphi-Quellcode:
if Length(satz) >= 5 then
begin
  if satz [5] <> '#then
    ..
end;
Dann gibt es keine Probleme.

Gruß

Dietmar Brüggendiek
Dietmar Brüggendiek
  Mit Zitat antworten Zitat