AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Codeoptimierung

Ein Thema von blablab · begonnen am 4. Aug 2010 · letzter Beitrag vom 4. Aug 2010
Antwort Antwort
Seite 1 von 2  1 2      
blablab

Registriert seit: 3. Jan 2006
509 Beiträge
 
Delphi 7 Enterprise
 
#1

Codeoptimierung

  Alt 4. Aug 2010, 08:54
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, 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
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Codeoptimierung

  Alt 4. Aug 2010, 08:56
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
blablab

Registriert seit: 3. Jan 2006
509 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: Codeoptimierung

  Alt 4. Aug 2010, 09:01
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.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Codeoptimierung

  Alt 4. Aug 2010, 09:04
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
blablab

Registriert seit: 3. Jan 2006
509 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: Codeoptimierung

  Alt 4. Aug 2010, 09:08
D7: "Das reservierte Wort inline ... hat keine Auswirkungen auf den Compiler" Schei*e...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#6

AW: Codeoptimierung

  Alt 4. Aug 2010, 09:13
- 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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 4. Aug 2010 um 10:39 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von mleyen
mleyen

Registriert seit: 10. Aug 2007
609 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Codeoptimierung

  Alt 4. Aug 2010, 09:35
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 var schneller läuft.
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#8

AW: Codeoptimierung

  Alt 4. Aug 2010, 10:04
Pack die Funktion in eine separate Include-Datei zB zwischenberechnung.inc und schreib an den Stellen, wo Du bisher den Code ausformuliert hast, einfach {$i zwischenberechnung.inc} . Dann hast Du nur eine zentrale Stelle für die Änderung und keinen Overhead für die Funktionsaufrufe.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#9

AW: Codeoptimierung

  Alt 4. Aug 2010, 10:09
einfach {$i zwischenberechnung.inc} .
Zitat:
notfalls gibt es auch noch {$inline}
{$include...} oder {$i ...} ich mag die langen Versionen lieber, da sie verständlicher sind
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 4. Aug 2010 um 10:39 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#10

AW: Codeoptimierung

  Alt 4. Aug 2010, 10:16
{$inline...} oder {$i ...} ich mag die langen Versionen lieber, da sie verständlicher sind
Ich dachte, es heißt {$INCLUDE ...}
Uwe Raabe

Geändert von Uwe Raabe ( 4. Aug 2010 um 10:19 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:33 Uhr.
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