![]() |
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 |
AW: Geschwindigkeit von Schleifen
Von welchen Schleifen sprichst Du? Gibt mal Beispiele.
|
AW: Geschwindigkeit von Schleifen
na For-To, For-Downto, For-In, While-Do, Repeat-Until, If-Then und Case-Of... :D
|
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. |
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... :) |
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! |
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? :) |
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.
|
AW: Geschwindigkeit von Schleifen
Zitat:
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. |
AW: Geschwindigkeit von Schleifen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz