Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Frage zu inline (https://www.delphipraxis.net/202624-frage-zu-inline.html)

DelTurbo 23. Nov 2019 10:32

Delphi-Version: 2007

Frage zu inline
 
Hi,
ich habe eine Frage zu dem inline. Das interessiert mich. Wie macht es eigentlich Delphi 2007? Kann man folgenden Artikel auch auf Delphi 2007 beziehen, oder muss man es dort ein bissl anders machen?

http://docwiki.embarcadero.com/RADSt...frufen_(Delphi)

Danke im voraus
PS.: Ich hatte die frage zwar schon in einem anderen Thread gestellt, aber die war wohl irgendwie Offtopic.

dummzeuch 23. Nov 2019 11:37

AW: Frage zu inline
 
Zitat:

Zitat von DelTurbo (Beitrag 1451839)

Dein Link funtioniert nicht.

Prinzipiell funktioniert Inlining bei allen Delphi-Compilern, die es unterstützen, gleich. Allerdings wurde das im Laufe der Zeit immer wieder mal verbessert.

DelTurbo 23. Nov 2019 11:45

AW: Frage zu inline
 
Ups,
da ist was abgeschnitten.
http://docwiki.embarcadero.com/RADSt...rufen_(Delphi))

So ist er richtig.

dummzeuch 23. Nov 2019 14:30

AW: Frage zu inline
 
Zitat:

Zitat von DelTurbo (Beitrag 1451850)
Ups,
da ist was abgeschnitten.
http://docwiki.embarcadero.com/RADSt...rufen_(Delphi))

So ist er richtig.

Ja, jetzt passts.

Der Text ist aber ziemlich schlecht übersetzt, alleine im Bereich über Inline habe ich beim kurzen drüberlesen zwei Grammatik-Fehler gesehen. Ich glaube ich bleibe lieber bei Englisch...

Aber zum Thema: Ja, was da steht, gilt prinzipiell auch für Delphi 2007. Spätere Compiler wurden erweitert, so dass sie mehr Funktionen inlinen können, aber da das ja sowieso nur ein "Vorschlag" an den Compiler ist, spielt das keine Rolle.

(Wobei es mir unerklärlich ist, weshalb man dem Compiler überhaupt einen "Vorschlag" zum Inlining machen muss, kann der das nicht von selbst ermitteln? Und eigentlich will man das ja auch fast immer. Es sollte eher einen Schalter zum Ausschalten dieser Funktionialität geben.

(Aber ich glaube mich zu erinnern, dass es diese Diskussion schon häufiger gab.)

Edit:
"Durch die {$INLINE}-Compiler-Direktive wird Ihnen eine besserer Steuerung des Inlining ermöglicht."

Das wusste ich gar nicht. Wann wurde diese Compiler-Direktive eingeführt? Das liest sich deutlich sinnvoller als die Funktions-Direktive.

twm

TurboMagic 24. Nov 2019 09:18

AW: Frage zu inline
 
Inline führt zu größeren Binaries. Das will nicht jeder und nicht alles ist gleich performancekritisch.

DelTurbo 24. Nov 2019 14:41

AW: Frage zu inline
 
Hi,
danke für dir die erklärung. Dann werde ich weiterhin bei 2007 bleiben. Irgendwie habe ich mich daran gewöhnt. Bisher bin ich immer mit den 32bit ausgekommen. Ich glaube wenn ich wirkich ein Programm mal in 64bit (für Windows) brauchen würde, würde ich das durch CodeTyphon jagen.

DieDolly 24. Nov 2019 14:45

AW: Frage zu inline
 
Zitat:

Zitat von TurboMagic (Beitrag 1451888)
Inline führt zu größeren Binaries. Das will nicht jeder und nicht alles ist gleich performancekritisch.

Es gibt für den Notfall noch immer UPX.

TurboMagic 24. Nov 2019 15:08

AW: Frage zu inline
 
Zitat:

Zitat von DelTurbo (Beitrag 1451942)
Hi,
danke für dir die erklärung. Dann werde ich weiterhin bei 2007 bleiben. Irgendwie habe ich mich daran gewöhnt. Bisher bin ich immer mit den 32bit ausgekommen. Ich glaube wenn ich wirkich ein Programm mal in 64bit (für Windows) brauchen würde, würde ich das durch CodeTyphon jagen.

Du weißt aber schon, dass es seit D2007 sehr viele Neuerungen in der
RTL, VCL und bei Datenbankframework s gab?
Da sind auch viele Lohnenswerte Sachen dabei.

DelTurbo 24. Nov 2019 15:11

AW: Frage zu inline
 
Ja, ich habe mir XE8 und 10.3 mal angesehen. Da ist aber so eigentlich nix bei was ich brauchen wurde.
Trotzdem danke für den hinweis.

Stevie 24. Nov 2019 19:23

AW: Frage zu inline
 
Zitat:

Zitat von TurboMagic (Beitrag 1451888)
Inline führt zu größeren Binaries. Das will nicht jeder und nicht alles ist gleich performancekritisch.

Inline sorgt erstmal, sofern der Compiler es berücksichtigt (es ist nur ein Hinweis an den Compiler, kein Befehl), dass der aufgerufene Code so an die Aufrufstelle verfrachtet wird. Das kann sowohl zu mehr Binärcode aber auch zu weniger Binärcode führen. Gerade bei Routinen oder Methoden, die lediglich eine andere Routine/Methode aufrufen ist inline durchaus nützlich, um unnötige Calls zu vermeiden.
Leider optimiert der Compiler den Code oft genug nicht gut genug, um den besten Nutzen aus inline zu ziehen, der möglich wäre.
Und dann wären da noch so Bugs wie dieser.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:51 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