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

Performanz von verschachtelte if- Abfragen

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

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#11

Re: Performanz von verschachtelte if- Abfragen

  Alt 17. Sep 2007, 18:01
Zitat von Matze:
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.
Delphi-Quellcode:
if (a and b and c) then
begin

end;
Ich wage zu bezweifeln, dass der Compiler das nicht wegoptimiert.
  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
 
#12

Re: Performanz von verschachtelte if- Abfragen

  Alt 17. Sep 2007, 18:05
@Dominik/Markus: Stimmt. Wie bereits geschrieben, das soll nur das Vorgehen sein, die Umsetzung müsste etwas anders aussehen.
@NamenLozer: Das sind eben seine Bedingungen. Ich weiß nicht, wie diese aussehen. Das können Funktionsaufrufe sein und ähnliches.
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#13

Re: Performanz von verschachtelte if- Abfragen

  Alt 17. Sep 2007, 18:17
Hi Matze,

das meinte ich nicht. Wenn in der if-abfrage kein code steht wird die gesamte if-abfrage sicherlich wegoptimiert. Wenn da aber was drinsteht ist das Ergebnis verfälscht. Es sei denn man macht darin eine zweite Zeitmessung - Die braucht aber auch wieder Zeit
  Mit Zitat antworten Zitat
Phantom1

Registriert seit: 20. Jun 2003
282 Beiträge
 
Delphi 10.4 Sydney
 
#14

Re: Performanz von verschachtelte if- Abfragen

  Alt 17. Sep 2007, 20:23
Zitat von NamenLozer:
Hi Matze,

das meinte ich nicht. Wenn in der if-abfrage kein code steht wird die gesamte if-abfrage sicherlich wegoptimiert. Wenn da aber was drinsteht ist das Ergebnis verfälscht. Es sei denn man macht darin eine zweite Zeitmessung - Die braucht aber auch wieder Zeit
Oder man deaktiviert einfach die CompilerOptimierung ^^
  Mit Zitat antworten Zitat
dominikkv

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

Re: Performanz von verschachtelte if- Abfragen

  Alt 17. Sep 2007, 20:37
so hier ein test:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Zeit1, Zeit2: Cardinal;
  I, Dummy: Integer;
const
  Durchläufe = 100000000000;
begin
  Dummy := 0;
  Zeit1 := GetTickCount;

  for I := 0 to Durchläufe do
    if I <= Durchläufe then
      Inc(Dummy);

  Zeit1 := GetTickCount - Zeit1;
  Dummy := 0;
  Zeit2 := GetTickCount;

  for I := 0 to Durchläufe do
    Inc(Dummy);

  Zeit2 := GetTickCount - Zeit2;

  showmessage(Format('Ich habe für %d if-Abfragen %d Millisekunden benötigt!'#13#10+
    'Das sind %12.10f Millisekunden pro if-Abfrage!', [Durchläufe, (Zeit1 - Zeit2), ((Zeit1 - Zeit2) / Durchläufe)]));
end;
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
daschaos

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

Re: Performanz von verschachtelte if- Abfragen

  Alt 19. Sep 2007, 09:52
Ok, das probier ich auch mal aus! Danke für eure schnellen Antworten!

Findet man eigentlich auch so allgemeine Tipps zur Codeoptimierung irgendwo? Wie zum Beispiel das Sortieren der if- Abfragen nach Abbruchkriterium etc. was hier so vorgeschlagen wurde? Sicher ist es nich immer einfach, alles zu verallgemeinern, aber so ein paar generelle Dinge, was man irgendwie beachten könnte?! Das wäre toll...
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 08:38 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