Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Geschwindigkeit von Schleifen (https://www.delphipraxis.net/183081-geschwindigkeit-von-schleifen.html)

Dennis07 10. Dez 2014 10:16

Geschwindigkeit von Schleifen
 
Tach zusammen,
aus reinem Interesse wollt ich mal fragen, welche Schleifen schneller ausgeführt werden für welche bedingungen als andere und wieso. Ich meine, ich hätte vor ungefähr nem Jahr schonmal so etwas gelesen, erinnere mich allerdings nicht mehr an den genauen Thread oder Autor. Auf Google habe ich auch nichts gefunden.
Nur zu testen, was schneller ist, wäre erstens ziemlich ungenau, aufwändig und würde mir außerdem keinen verständlichen Grund liefern.
Wäre nett, wenn jemand, der eine Antwort weiß, sie mir sagen könnte :) oder zumindestens weiß, wie man das herausfindet, bzw. wo man es findet.

MFG

Dejan Vu 10. Dez 2014 10:24

AW: Geschwindigkeit von Schleifen
 
Von welchen Schleifen sprichst Du? Gibt mal Beispiele.

Dennis07 10. Dez 2014 10:26

AW: Geschwindigkeit von Schleifen
 
na For-To, For-Downto, For-In, While-Do, Repeat-Until, If-Then und Case-Of... :D

jfheins 10. Dez 2014 10:29

AW: Geschwindigkeit von Schleifen
 
Die Geschwindigkeit von Schleifen ist ein erster Näherung "hinreichend schnell" und in zweiter "egal".

Eine for-in Schleife ist vermutlich einen *Hauch* langsamer, da da einige Funktionsaufrufe versteckt sind.
Es ist sinnvoller, sich auf andere Sachen zu konzentrieren:
1. Die Anweisungen in der Schleife
2. Brauche ich die Schleife? Kann ich eine bessere Datenstruktur einsetzen, die schneller ist und auf die Schleife verzichtet?

P.S.: Schleifen führen Anweisungen 0 bis x fach aus, if-then und case-of sind daher keine Schleifen.

Dennis07 10. Dez 2014 10:31

AW: Geschwindigkeit von Schleifen
 
Ja, das stimmt natürlich. Ich schrieb ja auch, dass es im Grunde nur eine nice-to-know Frage ist. Ich wollte halt nur wissen, wie die Schleifen vom Compiler ausgewertet werden und was für ein Maschinencode da erzeugt wird.
Natürlich ist es weitestgehend irrelevant für den alltäglichen Gebrauch... ;)

PS: Ja, allerdings wäre es auch nett zu wissen, ob der CASE und IF code ähnlich bzw. identisch ist und ab wievielen Aufrufen CASE wohl schneller ist... :)

Dejan Vu 10. Dez 2014 10:37

AW: Geschwindigkeit von Schleifen
 
Du solltest das einfach selbst analysieren: Der Maschinencode ist in Delphi sichtbar und wie man Zeitmessungen macht, sollte Dir spätestens nach dem Bemühen der SuFu klar sein.

Los, ran ans Werk!

Dennis07 10. Dez 2014 10:38

AW: Geschwindigkeit von Schleifen
 
Ja, genau das war ja meine Frage:
Wie kann ich mir den Quelltext, der bei einer For-Schleife beispielsweise erzeugt wird, anzeigen lassen?
:)

Dejan Vu 10. Dez 2014 10:45

AW: Geschwindigkeit von Schleifen
 
Das Tastenkürzel kenn ich nicht auswendig, aber du solltest einen Breakpoint auf die Schleife setzen und dann im Menü nach 'Assembleransicht' o.ä. schauen.

himitsu 10. Dez 2014 10:46

AW: Geschwindigkeit von Schleifen
 
Zitat:

Zitat von Dennis07 (Beitrag 1282846)
If-Then und Case-Of... :D

Das sind keine Schleifen!

Und ansonsten ist alles in etwa gleich schnell.
Außerdem wählt man den Typ der Schleife anhand der Aufgabenstelltung aus und nicht wegen der Geschwindigkeit.


Intern bestehen alle Schleifen auch nur aus IF-THEN und GOTO ... nur die Abbruchbedingungen unterscheiden sich.

Dejan Vu 10. Dez 2014 10:57

AW: Geschwindigkeit von Schleifen
 
Zitat:

Zitat von himitsu (Beitrag 1282856)
Zitat:

Zitat von Dennis07 (Beitrag 1282846)
If-Then und Case-Of... :D

Das sind keine Schleifen!

Och menno.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:13 Uhr.
Seite 1 von 3  1 23      

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