Einzelnen Beitrag anzeigen

SMO

Registriert seit: 20. Jul 2005
178 Beiträge
 
Delphi XE6 Professional
 
#31

Re: Was ist schneller, Funktion oder Prozedure?

  Alt 28. Okt 2005, 18:49
Zitat von dizzy:
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?
Nein. Jetzt zum dritten Mal:
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:
var
  i: Integer;
begin
  x(i);
  i := y;
end.
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.

So ist es besser:
Delphi-Quellcode:
procedure Test;
var
  ergx, ergy: Integer;
begin
  x(ergx);
  ergy := y;
end;
Mit inlining wird "ergy := y" hier total wegoptimiert.
  Mit Zitat antworten Zitat