AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Lohnen sich If abfragen vor dem schreiben auf einen Wert?
Thema durchsuchen
Ansicht
Themen-Optionen

Lohnen sich If abfragen vor dem schreiben auf einen Wert?

Ein Thema von snow · begonnen am 24. Dez 2007 · letzter Beitrag vom 25. Dez 2007
 
grenzgaenger
(Gast)

n/a Beiträge
 
#10

Re: Lohnen sich If abfragen vor dem schreiben auf einen Wert

  Alt 25. Dez 2007, 10:00
Zitat von Popov:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i, x: Integer;
  Start, Ende, Zeit: TDateTime;
begin
  x := 0;
  Start := Now;

  for i := 0 to 2147483647 do
  begin
    (*Variante 1: Hier wird der Wert nur ein einziges Mal übergeben*)
    if i = 0 then x := i;

    (*Variante 2: Hier wird der Wert jedes Mal übergeben*)
    //x := i;
  end;

  Ende := Now;
  Zeit := Ende - Start;

  ShowMessage('Fertig bei x = ' + IntToStr(x) + ^j + 'Dauer: ' + TimeToStr(Zeit));
end;
Hab mal schnell etwas gebastelt. Es geht zwar genauer, aber für grobe Berechnung reicht es.

Laut der Routine dauert es doppelt so lange bei 2147483647 Abfragen und nur einer Zuweiseung, als wenn der Wert 2147483647 Mal übergeben wird.
tja, das beispiel ist so gewählt, dass man sich die abfrage schenken kann, sie ist redundant. daher ist es nicht verwunderlich, dass der compi länger braucht, muss ja zwei mal den speicherzugriff machen.

aber normal ist es so, dass z.b. nicht nur 'ne seicherstelle gesetzt wird, mit der der processor prima umgehen kann (integer), sondern etwas complexeres... z.b. byte, string, record, objekt... und da sind die kosten der zuweisung höher, als für den vergleich.

ausserdem, kann man in einer solchen abfrage auch noch zusätzliche funktionen durchführen, z.b. 'n modified flag setzen... und hier ist es dann wichtig, dass das nicht immer gesetzt wird, sondern nur, wenn sich wirklich etwas geändert hat.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz