AGB  ·  Datenschutz  ·  Impressum  







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

Delphi und C++

Ein Thema von davar · begonnen am 14. Okt 2005 · letzter Beitrag vom 28. Okt 2005
Antwort Antwort
Tubos

Registriert seit: 25. Feb 2004
Ort: Yspertal (Niederösterreich)
1.014 Beiträge
 
Delphi 7 Personal
 
#1

Re: Delphi und C++

  Alt 15. Okt 2005, 18:59
Zitat:
Zitat:
Verkürzt gesagt:
Bei Inline-Funktionsaufrufen wird der Code der Funktion jedesmal in das Programm eingefügt, und nicht zu einem Unterprogrammaufruf übersetzt.
Das könnte bei vielen sehr kleinen Funtkionen natürlich irgendwie schon ein Vorteil sein. Bei großen Funktionen fällt das dann wahrscheinlich garnicht ins Gewicht. Aber macht das das Programm nicht viel größer, wenn man davon viel Gebrauch macht? *kopfkratz*. Also irgendwie bin ich nicht so sehr überzeugt, dass das jetzt so ein Kick für die Geschwindigkeit ist...
Ob das Programm größer wird, kommt ganz drauf an. Ist die Methode/Funktion groß und wird an vielen Stellen aufgerufen wird die EXE natürlich größer. Sieht die Methode hingegen so aus (pseudocode, hab die delphi syntax schon vergessen):
Code:
inline methode GetNumber(), rückgabewert ganzzahl
begin
gebe die variable number zurück
end
... dann wird der Code überhaupt nicht größer, vielleicht sogar kleiner weil ein einzelner Variablenzugriff aus weniger Assemblerinstruktionen als ein Funktionsaufruf besteht.
Ich inline alle derartigen Funktionen. Wenn ich weiß dass ich die Methode/Funktion nur an einigen wenigen Stellen im Programm aufrufe und sie dort allerdings sehr oft aufgerufen wird, dann inline ich auch wenn etwas mehr Code drinnen steht*.
Im obigen Beispiel zeigt sich der entscheidende Vorteil: Objektorientierte Programmierung mit Get/Set-Methoden völlig ohne Performanceeinbußen!

Zitat:
Also irgendwie bin ich nicht so sehr überzeugt, dass das jetzt so ein Kick für die Geschwindigkeit ist...
Wenn du eine Funktion verdammt oft aufrufst (bei irgendwelchen Berechnungen leicht möglich) sind inline-Funktionen sehr sinnvoll. Kann je nach Code einen ganz schönen Performancevorteil bringen. Ein Funktionsaufruf ist mit einem nicht zu unterschätzenden Aufwand verbunden.
Die CPU muss an eine andere Codstelle springen, viele Register müssen in den RAM geschrieben und beim Rücksprung wieder geladen werden.

*) Zu beachten ist dass der Compiler entscheiden kann, eine Funktion nicht zu inlinen obwohl ich es will. Manche Compiler inlinen auch Funktionen, die ich nicht mit inline angegeben habe. Es kann sogar vorkommen dass der Code an einigen Stellen inline und an anderen normal eingebunden wird!
Lukas
  Mit Zitat antworten Zitat
Antwort Antwort


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 14:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz