Autor |
Beitrag |
Jacdelad
      
Beiträge: 109
Win XP Pro
Borland Developer Studio 2006 Architect
|
Verfasst: So 02.04.06 13:27
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
|
|
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Jacdelad 
      
Beiträge: 109
Win XP Pro
Borland Developer Studio 2006 Architect
|
Verfasst: 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
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
AndyB
      
Beiträge: 1173
Erhaltene Danke: 14
RAD Studio XE2
|
Verfasst: So 02.04.06 21:47
BenBE 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?
_________________ Ist Zeit wirklich Geld?
|
|
|