Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi For-do Schleife mit Sprung (https://www.delphipraxis.net/13032-do-schleife-mit-sprung.html)

F.W. 14. Dez 2003 19:38

Re: For-do Schleife mit Sprung
 
Der Fortschritt wird auch so weitergezeichnet. Was ich brauche ist halt irgendwas, was die Zeit "zählt".

nailor 14. Dez 2003 19:43

Re: For-do Schleife mit Sprung
 
dann mach deine Anzeige nicht von der Zeit abhängig, sondern von der Anzahl der untersuchten Zahlen

F.W. 15. Dez 2003 18:20

Re: For-do Schleife mit Sprung
 
Die Zeit ist wichtig für mich, damit ich(weil ich ja noch dran rumm progge) weiß, welcher Quellcode besser(schneller) ist. Außerdem hat ja jeder Computer eine andere Geschwindigkeit.

jbg 15. Dez 2003 18:39

Re: For-do Schleife mit Sprung
 
Zitat:

Zitat von Nailor
Allerdings habe ich immer gedacht, dass Schleifen intern anders funktionieren, und Luckies Gebastel daher eh nicht funktioniert.

Luckies Code funktioniert, da ein Borland Mitarbeiter des Compiler-Teams diesen Spezialfall bedacht hat und dem Code-Optimierer dieses beigebracht hat. Was der Compiler in diesem Fall erzeugt ist eine nicht optimierte for-Schleife, bei der die Manipulation ohne Folgen (Endbedingung ausgeschlossen) möglich ist.

Zitat:

Zitat von d3g
Wenn der Optimierer Lust dazu hat, ist das auch so. Dann wird das CX-Register als Schleifenvariable benutzt und der Sprung funktioniert mit dem LOOP-Befehl statt mit einem CMP- und einem JZ-Befehl (braucht 3 Takte weniger).

Das war mal zu 386-Zeiten so. Beim 486 ist der LOOP Befehl im Vergleich zu "DEC, JZ" eine lahme Schnecke. Selbst ein "CMP, JE" ist auf einem Pentium schneller. Dadurch ist es egal ob nun das ECX Register oder ein anderes freies als Zähler benutzt wird, was der Delphi-Compiler sich auch zu Nutze macht.


Noch eine Idee für die for-Schleife mit einem Step:
Delphi-Quellcode:
var
  i, ii: Integer;
begin
  for ii := 0 to (Count div 2 - 1) do
  begin
    i := ii * 2; // => SHL ist nicht gerade langsam
    // hier mit i arbeiten
  end;
end;

phlux 15. Dez 2003 18:57

Re: For-do Schleife mit Sprung
 
Zitat:

Zitat von jbg
Noch eine Idee für die for-Schleife mit einem Step:
Delphi-Quellcode:
var
  i, ii: Integer;
begin
  for ii := 0 to (Count div 2 - 1) do
  begin
    i := ii * 2; // => SHL ist nicht gerade langsam
    // hier mit i arbeiten
  end;
end;

*lol* kommt da nicht (Count div 2 - i) hin???

jbg 15. Dez 2003 19:13

Re: For-do Schleife mit Sprung
 
Zitat:

Zitat von phlux
kommt da nicht (Count div 2 - i) hin???

Wieso sollte da i hinkommen?

nailor 16. Dez 2003 13:34

Re: For-do Schleife mit Sprung
 
Zitat:

Zitat von F.W.
Die Zeit ist wichtig für mich, damit ich(weil ich ja noch dran rumm progge) weiß, welcher Quellcode besser(schneller) ist. Außerdem hat ja jeder Computer eine andere Geschwindigkeit.

Ganz an den Anfang ein GetTickCount; ganz ans Ende noch eins. Daraus die Rechenzeit bestimmen!

Zum Anzeigen des Fortschritts mit Anzahl der untersuchten Zahlen arbeiten. Ehrlich!!!


:mrgreen: :mrgreen: :mrgreen: Oder den ganzen Code zweimal ausführen, damit du beim zweiten mal vorher weißt, wielange er braucht, und davon den Fortschritt abhängig machen kannst. :mrgreen: :mrgreen: :mrgreen:

phlux 16. Dez 2003 14:15

Re: For-do Schleife mit Sprung
 
Zitat:

Zitat von jbg
Zitat:

Zitat von phlux
kommt da nicht (Count div 2 - i) hin???

Wieso sollte da i hinkommen?

Kp :roll: ergibt auch keinen Sinn, vergiss es einfach :lol:

F.W. 16. Dez 2003 20:17

Re: For-do Schleife mit Sprung
 
Die Differenz der beiden GetTickCount s gibt mir also den Zeitunterschied in 1000stel-Sekunden zurück :o

Sehr schön danke!!!! :thuimb:

jbg 16. Dez 2003 20:27

Re: For-do Schleife mit Sprung
 
Die Auflösung ist nicht ganz 1/1000, sondern liegt etwas darunter.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:50 Uhr.
Seite 4 von 4   « Erste     234   

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