AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi For While Repeat Unterschied in der Geschwindigkeit
Thema durchsuchen
Ansicht
Themen-Optionen

For While Repeat Unterschied in der Geschwindigkeit

Ein Thema von uwewo · begonnen am 2. Apr 2007 · letzter Beitrag vom 2. Apr 2007
Antwort Antwort
uwewo

Registriert seit: 14. Jul 2004
Ort: Karlsruhe
479 Beiträge
 
Delphi 2006 Professional
 
#1

For While Repeat Unterschied in der Geschwindigkeit

  Alt 2. Apr 2007, 12:44
Hallo,

habe mir mal Gedanken über die Geschwindigkeitsunterschiede der verschiedenen Schleifen gemacht.

Habe diese mit folgendem Code getestet

Delphi-Quellcode:
procedure TMain.BtnForClick(Sender: TObject);
var Start, Stop, c : TLargeInteger;
    i, x : Integer;
begin
  QueryPerformanceFrequency(c);
  QueryPerformanceCounter(Start);
  x := 1;

  for i := 1 to 2147483647 do x := x + 1;

  QueryPerformanceCounter(Stop);
  Label1.Caption := Format('Time: %g s',[(Stop-Start)/c]);
end;

//------------------------------------------------------------------------------

procedure TMain.BtnWhileClick(Sender: TObject);
var Start, Stop, c : TLargeInteger;
    i, x : Integer;
begin
  QueryPerformanceFrequency(c);
  QueryPerformanceCounter(Start);
  x := 1;

  while x < 2147483647 do x := x + 1;

  QueryPerformanceCounter(Stop);
  Label2.Caption := Format('Time: %g s',[(Stop-Start)/c]);
end;

//------------------------------------------------------------------------------

procedure TMain.BtnRepeatClick(Sender: TObject);
var Start, Stop, c : TLargeInteger;
    i, x : Integer;
begin
  QueryPerformanceFrequency(c);
  QueryPerformanceCounter(Start);
  x := 1;

    repeat
      x := x+1;
    until (x = 2147483647);

  QueryPerformanceCounter(Stop);
  Label3.Caption := Format('Time: %g s',[(Stop-Start)/c]);
end;
Denkt Ihr es ist fair, dass auf diese Art zu vergleichen?

Im Anhang der komlette Source und ein ScreenShot.
Miniaturansicht angehängter Grafiken
screenshot_433.jpg  
Angehängte Dateien
Dateityp: zip for_-_while_-_repeat_test_562.zip (6,1 KB, 12x aufgerufen)
Uwe
  Mit Zitat antworten Zitat
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
460 Beiträge
 
Delphi XE2 Enterprise
 
#2

Re: For While Repeat Unterschied in der Geschwindigkeit

  Alt 2. Apr 2007, 12:47
Ich denke das die Wahl so mancher Schleife von der Art der Ausführung und Verwendung abhängt und nicht von der Geschwindigkeit.

Aber nette Idee das mal zu testen.
Matthias
Das Leben ist eines der härtesten.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

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

Re: For While Repeat Unterschied in der Geschwindigkeit

  Alt 2. Apr 2007, 12:48
Nein, es ist nicht fair. Die For-Schleife zählt I hoch und außerdem X, die While- und Repeat-Schleife dagegen nur X...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
uwewo

Registriert seit: 14. Jul 2004
Ort: Karlsruhe
479 Beiträge
 
Delphi 2006 Professional
 
#4

Re: For While Repeat Unterschied in der Geschwindigkeit

  Alt 2. Apr 2007, 13:47
@alzamair
Ok, stimme Dir zu ist nicht ganz fair, alerdings liegt dir For Schleife eh ausser Konkurrenz
da die Enbedingung nicht jedesmal neu geprüft wird.
Uwe
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

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

Re: For While Repeat Unterschied in der Geschwindigkeit

  Alt 2. Apr 2007, 13:54
Wat? Stimmt nicht. Die Endbedingung muss doch jedesmal geprüft werden, sonst wäre es eine Endlosschleife. Der Term wird allerdings nur einmal ausgewertet, das ist richtig.

Um die Schleifen irgendwie vergleichen zu können, muss man dann eben soetwas machen:

Var
i : Integer;

...
For i:=0 to ccMaxLoops Do
_DoSomeThing;

i := 0;
While i<= ccMaxLoops do Begin
_DoSomeThing;
inc(i);
End;

i := 0;
Repeat
_DoSomeThing;
inc (i);
Until i = ccMaxLoops;
...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort


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 22:24 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