Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Suche Inline-Funktion (oder was in der Art)


Jacdelad - So 02.04.06 13:27
Titel: Suche Inline-Funktion (oder was in der Art)
Hallo ich nochmal...

Also ich habe noch ein kleines Problem. Ich habe eine Prozedur in einer DLL definiert (Delphi 7 Enterprise), die ca. 600 Mal aufgerufen wird. Nun möchte ich aber, aufgrund der Performance, dass nicht immer die Prozedur aufgerufen wird sondern der Compiler an diese Stelle immer den Quelltext kopiert (ist uch nur eine Programmzeile). Ich weiß, dass ich das von Hand machen könnte, aber das würde mir dann zu unübersichtlich werden, außerdem würde der Quelltext unnötig groß werden...Wie kann man das realisieren???

Jac


Delete - So 02.04.06 13:42

hallo jacdelad,

schon mal auf die procedure deklaration geschaut? da gibts einen parameter... "inline;" müsst für deine zwecke das richtige sein.

also in etwa so...


Delphi-Quelltext
1:
2:
3:
4:
procedure fooo; inline;
begin 
 ....
end;


hängen aber einige voraussetzungen dran. lurk dir hier mal die hilfe zu an.

<HTH>


BenBE - So 02.04.06 13:48

Inline ist erst ab D9 verfügbar; unter D7 wirst Du das also nicht nutzen können.

Weiterhin sei anzumerken, dass Inline von Borland so kastriert wurde, dass es sich nicht lohnt, es einzusetzen. Da kann man schon durch andere Optimierungen mehr rausholen.

Weiterhin sei anzumerken, dass Inline nicht Cross Module funktioniert, d.h. Du kannst nicht in deiner Hauptanwendung eine Routine einer DLL inlinen.

Tipp: Lass es. Zum optimieren gibt's bessere Wege.


Jacdelad - So 02.04.06 17:49

@Grenzgaenger: Wie unten schon erwähnt wird "inline" erst ab Delphi 9 unterstützt. Ich mache die DLL aber in Delphi 7

@BenBE: Hättest du vielleicht eine Idee, die mir weiterhelfen könnte???

Jac


BenBE - So 02.04.06 20:53

Jup. Die Verschlimmbesserung mit Inline sein zu lassen, da sie eh nicht wirklich was bringt (das ist dem Borland-Compiler geschuldet, da dieser Inline nur zulässt, wenn's eh nix bringt). Da kann man oftmals mehr rausholen, wenn man für die gewünschte Funktion Stackframes abschaltet (und sofern sinnvoll) ASM zum Optimieren einsetzt.


AndyB - So 02.04.06 21:47

user profile iconBenBE hat folgendes geschrieben:
Da kann man oftmals mehr rausholen, wenn man für die gewünschte Funktion Stackframes abschaltet

Wie du hast die Stackframes in den Compiler-Optionen von Standard AUS auf EIN gestellt?