AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Performanz von verschachtelte if- Abfragen
Thema durchsuchen
Ansicht
Themen-Optionen

Performanz von verschachtelte if- Abfragen

Ein Thema von daschaos · begonnen am 17. Sep 2007 · letzter Beitrag vom 19. Sep 2007
Antwort Antwort
Seite 1 von 2  1 2      
daschaos

Registriert seit: 23. Mai 2007
117 Beiträge
 
Delphi 2006 Professional
 
#1

Performanz von verschachtelte if- Abfragen

  Alt 17. Sep 2007, 13:29
Ich als relativer Programmieranfänger hab da ma eine Frage. Kostet es eigentlich viel Zeit, eine if Abfrage die 3-4 'and' oder 'or' benutzt zu durchlaufen?
Ich habe mal einen Profiler über mein Programm laufen lassen und ich frag mich, ob eine Methode die einiges an if Abfragen enthält, auch unter anderem deswegen einen Großteil der Laufzeit ausmacht oder ob das nur daran liegt das diese sehr oft aufgerufen wird?

Schonmal danke !

Liebe Grüße,
daschaos
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Performanz von verschachtelte if- Abfragen

  Alt 17. Sep 2007, 13:36
Kommt auf die Bedingungen an.

Du kannst ja in einer Bedingung 3 Stunden nach irgendetwas suchen, oder eine Web-Anfrage starten oder sonstwas.

Die Rechenzeit für die Abarbeitung bzw. Verknüpfung per OR/AND dürfte im Nanosekundenbereich anzusiedeln sein.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
daschaos

Registriert seit: 23. Mai 2007
117 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Performanz von verschachtelte if- Abfragen

  Alt 17. Sep 2007, 13:48
Das heißt wenn sich das lediglich um einfache Abfragen, wie zum Beispiel ob der Wert über 0 liegt oder eine Variable wahr oder falsch ist, es nicht so schlimm ist?
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Performanz von verschachtelte if- Abfragen

  Alt 17. Sep 2007, 13:58
Nein. Wie willst du es denn anders machen.
[Ein nichtgeschriebenes Programm läuft immer deutlich schneller als ein geschriebenes Programm. Aber die Unterschiede im Ergebniss sind verblüffend. ]

Wenn die Abfragen nötig sind, dann musst du sie eben machen. Aufhalten tun sie dein Programm nicht. Du könntest nur noch darüber nachdenken, wie du die Reihenfolge in den BEdingungen gestaltest. Denn unter Umständen (wenn das Endergebnis schon fest steht und keine weiteren Funktionen unter den Bedingungen sind) wird die Abfrage schon vorher abgebrochen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
daschaos

Registriert seit: 23. Mai 2007
117 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Performanz von verschachtelte if- Abfragen

  Alt 17. Sep 2007, 14:03
Ok, danke! Aber stimmt, ich könnte die Reihenfolge eventuell noch etwas umstellen...
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Performanz von verschachtelte if- Abfragen

  Alt 17. Sep 2007, 14:05
Das müsste sehr schnell gehen. Du kannst das selbst testen, wenn du magst (Vorgehensweise ungetestet):

Delphi-Quellcode:
var
  Start1, Start2: Integer;
  i: Integer;
begin
  Start1 := GetTickCount();
  for i := 1 to 100000 do
  begin
    Start2 := GetTickCount();
    if (a and b and c) then
    begin

    end;
    if i = 1 then
      ShowMessage(IntToStr(GetTickCount() - Start2)); // Zeit, die eine if-Anweisung benötigt
  end;

  ShowMessage(IntToStr(GetTickCount() - Start1)); // Zeit, die alle if-Anweisungen benötigen
end;
Die Dauer des Aufrufs von GetTickCount und die Abfrage i = 1 beeinflussen das Ergebnis natürlich minimal, aber grob kannst du feststellen, wie lange was nun benötigt.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#7

Re: Performanz von verschachtelte if- Abfragen

  Alt 17. Sep 2007, 14:06
Wenn die gleichen Bedingungen oder Teilausdrücke mehrfach auf gefragt werden dann kann man diese
auch vorab in einer Variable vom Typ Boolean ablegen.
Delphi-Quellcode:
 // Wenn also immer wieder so etwas auftaucht:
 if (x >= minx) and (x <= maxx) and .... then
 // dann gibt es eine Vereinfachung
 
 var ValidX : boolean;
 ...
 ValidX := (x >= minx) and (x <= maxx);
 if ValidX and .... then
Andreas
  Mit Zitat antworten Zitat
daschaos

Registriert seit: 23. Mai 2007
117 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Performanz von verschachtelte if- Abfragen

  Alt 17. Sep 2007, 14:17
Ja, in der Tat. Oh Mann, auf sowas könnt ich auch ma kommen. Danke danke danke! Ich muss noch soviel lernen .
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Performanz von verschachtelte if- Abfragen

  Alt 17. Sep 2007, 17:49
wobei der code bei showmessage angehalten wird, dh bei Matzes Beispiel stimmt das zweite showmessage mit der gesamtzeit nicht.
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Performanz von verschachtelte if- Abfragen

  Alt 17. Sep 2007, 17:50
Wobei sich ShowMessage an sich schon die Performance verschlechtert
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz