Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Codeoptimierung (https://www.delphipraxis.net/153465-codeoptimierung.html)

blablab 4. Aug 2010 07:54

Codeoptimierung
 
Hallo!

Ich habe einen Codeabschnitt der in mehreren Funktionen verwendet wird und aus einer Variable 3 neue Variablen berechnet. Mein Problem ist jetzt, dass ich nur 2 Möglichkeiten gefunden hab:
1) Ich kopiere den Codeabschnitt in jede Funktion rein und hab Probleme falls sich was ändert
2) Ich mach aus dem Codeabschnit eine neue Prozedur,
Delphi-Quellcode:
procedure Zwischenberechnung(const a; out b, c, d);
die dann immer aufgerufen wird und der Code braucht dann ~10% mehr Zeit.

Ich bin mit beiden Möglichkeiten unzufrieden. :) Die zusätzliche Zeit wär mir ja eigentlich egal, aber gleich 10% mehr für die exakt gleiche Funktionalität nervt mich schon ...
Gibt es eine weitere Möglichkeit???

Grüße
blablab

Bernhard Geyer 4. Aug 2010 07:56

AW: Codeoptimierung
 
Zitat:

Zitat von blablab (Beitrag 1039404)
Gibt es eine weitere Möglichkeit???

Ja. In neueren Delphi-Versionen das Schlüsselwort Inline. Code wird zu jeder verwendung copiert, aber er existiert nur Quelltexttechnisch ein mal.

blablab 4. Aug 2010 08:01

AW: Codeoptimierung
 
Geht das mit Delphi7? Es gibt das reservierte Wort "inline" allerdings nur wegen Abwärtskompatibilität... Und wie ich es anwende versteh ich (noch) nicht.

Bernhard Geyer 4. Aug 2010 08:04

AW: Codeoptimierung
 
Zitat:

Zitat von blablab (Beitrag 1039406)
Geht das mit Delphi7? Es gibt das reservierte Wort "inline" allerdings nur wegen Abwärtskompatibilität... Und wie ich es anwende versteh ich (noch) nicht.

Ich glaube unter D7 gab es nur das inline-Wort für Inline-Assembler. Hat aber nix mit inline neuerer Delphi-Versionen zu tun.

blablab 4. Aug 2010 08:08

AW: Codeoptimierung
 
D7: "Das reservierte Wort inline ... hat keine Auswirkungen auf den Compiler" Schei*e...

himitsu 4. Aug 2010 08:13

AW: Codeoptimierung
 
- Was wird denn nun genau gemacht?
- Wie oft wird diese Funktion aufgerufen?
- wieviel Code sind jeweils in der Funktion (also der doppelte Code)
und wieviel Code gibt es sonst noch (das Verhältnis also
- usw.

notfalls gibt es auch noch {$include} allerdings hat der Debugger (vorallem der Alte) und Codeeditor damit ein paar kleine Problemchen, so daß sich ein Debuggen der solcher ausgelagerten Codes etwas erschwert.

mleyen 4. Aug 2010 08:35

AW: Codeoptimierung
 
Ich kenn zwar den alten Compiler nicht, aber wenn kein inline zur Verfügung steht kannst du mal probieren ob´s mit einem (den Parametern) vorangesteltem
Delphi-Quellcode:
var
schneller läuft.

gammatester 4. Aug 2010 09:04

AW: Codeoptimierung
 
Pack die Funktion in eine separate Include-Datei zB zwischenberechnung.inc und schreib an den Stellen, wo Du bisher den Code ausformuliert hast, einfach
Delphi-Quellcode:
{$i zwischenberechnung.inc}
. Dann hast Du nur eine zentrale Stelle für die Änderung und keinen Overhead für die Funktionsaufrufe.

himitsu 4. Aug 2010 09:09

AW: Codeoptimierung
 
Zitat:

Zitat von gammatester (Beitrag 1039425)
einfach
Delphi-Quellcode:
{$i zwischenberechnung.inc}
.

Zitat:

notfalls gibt es auch noch {$inline}
Delphi-Quellcode:
{$include...}
oder
Delphi-Quellcode:
{$i ...}
ich mag die langen Versionen lieber, da sie verständlicher sind :stupid:

Uwe Raabe 4. Aug 2010 09:16

AW: Codeoptimierung
 
Zitat:

Zitat von himitsu (Beitrag 1039428)
Delphi-Quellcode:
{$inline...}
oder
Delphi-Quellcode:
{$i ...}
ich mag die langen Versionen lieber, da sie verständlicher sind :stupid:

Ich dachte, es heißt {$INCLUDE ...} :?:


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:08 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz