![]() |
Re: Was ist schneller, Funktion oder Prozedure?
Zitat:
Ein "var" Parameter erzwingt eine Speichervariable. Da ist dann nichts mehr drin mit Registeroptimierung und so. Wenn man also solche Tests macht, dann bitte den einzelnen Testfällen (hier der Prozedur und der Funktion) jeweils ihre eigenen lokalen Variablen geben.
Delphi-Quellcode:
So kann es ja nichts mit der Optimierung werden. Denn erstens ist i hier keine lokale Variable (wird also so oder so auf eine Speicherzelle abgebildet) und zweitens wird i für x und y benutzt, wobei x verhindert, das i auf ein Register statt Speicherzelle abgebildet wird.
var
i: Integer; begin x(i); i := y; end. So ist es besser:
Delphi-Quellcode:
Mit inlining wird "ergy := y" hier total wegoptimiert. ;)
procedure Test;
var ergx, ergy: Integer; begin x(ergx); ergy := y; end; |
Re: Was ist schneller, Funktion oder Prozedure?
Zitat:
Zitat:
Zitat:
Zitat:
Und ich meine es wäre auch (MS)C# gewesen der eine Schleife in der immer nur ein konstanter Wert auf eine Variable addiert wird, im Vorhinein komplett ausrechnet und nur mit einer Konstanten ohne Schleife implementiert. Ein "Optimizer" der nur greift wenn ich eh schon recht optimal gecoded habe, ist imho ebenfalls inkonsequent :). Zumal die Beispiele hier für den Coder offensichtliche Optimierungsmöglichkeiten zeigen. In dem obigen Beispiel geht es eher um die Ebene die der Programmierer erst im asm-code sehen könnte, und somit nichtmal direkten Einfluss darauf hat. Sicher sind die Methoden da oben sehr panne, da sie nur eine 0 schreiben. Aber es geht doch um das Konzept! Wenn so etwas einfaches nicht erkannt/verbessert wird, wie kann ich mich da noch darauf verlassen dass es in komplexeren Zusammenhängen besser läuft? |
Re: Was ist schneller, Funktion oder Prozedure?
![]() |
Re: Was ist schneller, Funktion oder Prozedure?
Zitat:
Zitat:
Delphi 2005 war die erste Version mit inlining, da kann man noch keine Perfektion erwarten. Ich habe gehört, dass es in Delphi 2006 schon ein bisschen verbessert worden ist. |
Re: Was ist schneller, Funktion oder Prozedure?
Zitat:
Nichtsdestotrotz - Delphi optimiert nicht so, wie es z.B. ein optimierender C- oder C++-Compiler tut. Dieser ist normalerweise auch dafür ausgelegt, total stupiden Code (wie in unserem Beispiel) zu optimieren - wenn sein Input nämlich von anderen Programmen wie lex oder yacc generiert wird, dann kann es sein, dass wirklich 10 mal "x = 10;" untereinander steht. |
Re: Was ist schneller, Funktion oder Prozedure?
Zitat:
|
Re: Was ist schneller, Funktion oder Prozedure?
Zitat:
Zitat:
Zitat:
Edit: Total verquottelt. |
Re: Was ist schneller, Funktion oder Prozedure?
Zitat:
Danke Flocke - ich hätts heut irgendwie nicht besser/direkter schreiben können :D Zitat:
Zitat:
Zitat:
|
Re: Was ist schneller, Funktion oder Prozedure?
Zitat:
Zitat:
Zitat:
Zitat:
Edit: Irnkwie krieg' ich das mit dem Quoten nicht auf die Reihe... Edit2: :wall: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:17 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-2025 by Thomas Breitkreuz