![]() |
Re: Was ist schneller, Funktion oder Prozedure?
Zitat:
Code:
Das wäre nochmal ein Stückchen schneller, da man hier keinen Speicherzugriff hat. Unter Umständen kann der letzte Befehl "MOV esi,eax" sogar entfallen, nämlich dann wenn "erg" im Folgenden auf das Register eax abgebildet wird.
function y: Integer;
---------------------- CALL y XOR eax, eax // Inhalt von eax 0 setzen RET // Rücksprung MOV esi,eax // Zuweisung an lokale Variable erg, die sich nun im Register esi befindet Wie ich oben bereits schrieb, Aufrufe mit var Parameter erzwingen immer eine Speichervariable. Deshalb kann man schon eine pauschale Aussage machen, nämlich: bei primitiven Datentypen Funktionen benutzen, kann der Optimierung dienlich sein. |
Re: Was ist schneller, Funktion oder Prozedure?
Zitat:
denn auch in einer procedure kann mal etwas schiefgehen und das bekommt der aufrufer dann nicht mit. |
Re: Was ist schneller, Funktion oder Prozedure?
Zitat:
Wobei bei einer Exception sogar ein Var-Parameter seine Vorteile haben kann, da man diesen ja am Anfang der Prozedur (vor einer eventuellen Exception) auf einen bestimmten Wert setzen kann, wärend bei der Funktion im Exceptionfall der Rückgabewert verloren geht. Und wiso soll der Benutzer ausgerechnet nur bei Prozedur nichts mitbekommen, wenn was schiefgeht? |
Re: Was ist schneller, Funktion oder Prozedure?
Zitat:
|
Re: Was ist schneller, Funktion oder Prozedure?
Zitat:
Rückgabe per parameter... hab ich komplett vergessen. War wohl ein Blackout ;) |
Re: Was ist schneller, Funktion oder Prozedure?
Zitat:
Delphi-Quellcode:
procedure x(var AValue: Integer); inline;
begin AValue := 0; end; function y: Integer; inline; begin Result := 0; end; var i: Integer; begin x(i); i := y; end. ![]() Mein Wissen über Assembler tendiert zwar gegen null, aber das sieht für mich ziemlich ähnlich aus :stupid: . Die Geschwindigkeiten sollten wohl auch nah beieinander liegen :stupid:² . Von anderen Optimierungen sehe ich aber nichts. |
Re: Was ist schneller, Funktion oder Prozedure?
Zitat:
\\edit: Jedoch hast du insofern Recht, als dass das xor für die 2. Codezeile über ist, ja. Da scheint mir der Optimizer kaum optimal zu sein. Mit ein Grund weswegen ich scharf darauf bin manche Dinge in asm selbst von Hand machen zu können - ich kann dem Automatismus also nicht voll vertrauen :D |
Re: Was ist schneller, Funktion oder Prozedure?
Zitat:
|
Re: Was ist schneller, Funktion oder Prozedure?
Mh, find ich nun fast enttäuschend. Dann heisst Inlining dort tatsächlich nur Ersparnis des Calls, bzw. der Vorbereitung der Parameter, und den Optimizer kümmerts nicht? In meinen Augen inkonsequent. In einem komplexeren Zusammenhang könnte ich ja verstehen dass da sicher nicht alles super-tip-top optimiert werden kann, da die Zusammenhänge sehr komplex werden können. Aber in so einem einfachen Fall dürfte das sehr wohl per Software erkennbar sein.
Aber nun back to Topic :stupid: |
Re: Was ist schneller, Funktion oder Prozedure?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:41 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