AGB  ·  Datenschutz  ·  Impressum  







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

Vertändnisfrage zu 'Meldungen'

Ein Thema von Delbor · begonnen am 6. Jun 2018 · letzter Beitrag vom 6. Jun 2018
Antwort Antwort
Benutzerbild von himitsu
himitsu

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

AW: Vertändnisfrage zu 'Meldungen'

  Alt 6. Jun 2018, 10:36
So in etwa.
Man kann es sich fast wie die Makros aus anderen Programmiersprachen vorstellen.
Der "Inhalt" dieser Funktion/Prozedur wird an der "Aufrufstelle" eingefügt, an statt einem CALL/Aufruf zu dieser Funktion.
> Es entfällt also ein Sprung, was bei "kurzen" Funktionen den Programmablauf verbessern kann.
(dass dieses "Einfügen" vom Compiler oft/meistens nicht wirklich optimal vorgenommen wird und bei Assembler-Funktionen praktisch garnicht gut geschehen kann, das ist eine andere Angelegenheit)

Und hier sagt der Compiler einfach nur
Zitat:
ich habe an der Stelle keinen Zugriff auf alles, was diese Funktion benötigt und ignoriere daher das INLINE.


PS: Was sich garnicht auflösen lässt, wäre z.B. ein Zugriff auf eine Funktion, globale Variable oder einen Typ, welcher in der Implementation der anderen Unit deklariert wurde.
> Hier geht nur INLINE weglassen oder diesen Teil ins Interface verschieben.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Vertändnisfrage zu 'Meldungen'

  Alt 6. Jun 2018, 11:18
Warum aber eine Routine wie MessageDlg inline deklariert wurde erschließt sich mir nicht wirklich.
Inline macht eigentlich nur Sinn wenn die Abarbeitung sich dann "messbar" auf die Ausführungsgeschwindigkeit auswirkt.
Ich bezweifle das für eine Dialogbox.........
Fritz Westermann
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Vertändnisfrage zu 'Meldungen'

  Alt 6. Jun 2018, 12:44
Inline macht eigentlich nur Sinn wenn die Abarbeitung sich dann "messbar" auf die Ausführungsgeschwindigkeit auswirkt.
Ich bezweifle das für eine Dialogbox.........
Bei inline wird ja nur der zusätzliche function call mit dem Parameterhandling auf dem Stack eingespart. Ob das überhaupt für den Anwender wahrnehmbare Auswirkungen hat ist eh zweifelhaft. Sinnvoll sind inline Deklarationen damit eigentlich nur, wenn der call-Aufwand ähnlich groß ist wie der execute-Aufwand der eigentlichen Funktion und die Funktion in zeitkritischen Anwendungen oft genug aufgerufen wird. Bei MessageDlg ist das allerdings wirklich mehr als fraglich. Hier wurde offenbar einfach nur Cargo-Cult-Programming betrieben, ohne über den Sinn auch nur ansatzweise nachzudenken.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Vertändnisfrage zu 'Meldungen'

  Alt 6. Jun 2018, 13:01
Und bei großen Programmen, mit viel Programmcode oder verteiltem Programmcode (BPL/DLL) der teilweise schnell ausgeführt werden soll/muss, welcher aber bei wenig freiem Speicher entladen sein kann und zurückgeladen werden muß (PageFault), bzw. wo das Programm sich erst Zugriff auf den anderen Speicherblock holen muß, um da die Funktion aufzurufen .... da kann Inline auch bei größeren Funktion manchmal sinnvoll sein.


Beispiel Taskmanager: Da wäre es schön, wenn er für seine Hauptfunktionen im physischen RAM Speicher reserviert hat und sich nicht einfach so auslagern lässt. (natürlich muß so ein Programm auch möglichst wenig RAM belegen)
Wenn mal wieder was arg hängt, vor allem durch zu wenig freien RAM und man will schnell in den Taskmanager um den Verursacher abzuwürgen .... es nervt schon, dass gerade dann der Taskmanager minutenlang braucht um sein Fenster anzuzeigen und man auch dann noch nur stockend in der Liste navigieren kann. (unter der Bedingung, dass der Taskmanager bereits geladen und nur minimiert war)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 6. Jun 2018 um 13:05 Uhr)
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.192 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Vertändnisfrage zu 'Meldungen'

  Alt 6. Jun 2018, 11:34
Hi zusammen

Vielen Dank für eure aufschlussreichen Antworten!

@Fritzew
Zitat:
Ich bezweifle das für eine Dialogbox.........
Andrerseits - wenn ich sehe, wielange andere Fenster (nicht unbedingt Delphi) brauchen, um sich aufzubauen... Ob das damit zusammenhängt, weiss ich nicht wirklich, aber ich ahlte es nicht für ausgeschlossen, dass sich das beim Threadmanagment von Windows bemerkbar macht.

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  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 18:23 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