Ich hab auf den KDT gehört, dass Delphi 9 Inlining von Prozeduren und Funktionen unterstütz und hab es heute aus langeweile mal einen Blick in die Hilfe von D9 gewagt ... Ich hätts bleiben lassen sollen, da ich nicht mehr aus dem Lachen raus kam ...
Denn: Inlining wird Unterstützt, wenn man die Ausnahmen weglässt (die etwa 90% der sinnvollen Anwendungen dieser Technik abdecken).
Was meine ich damit:
- Inlining von Prozeduren mit
ASM-Code (geht nicht)
- Inlining von Zirkulär verbundenen Units (nur von extra-zirkulären Referenzen)
- Inlining von Prozeduren mit Open Arrays (geht nicht)
- Inlining über Packagrenzen hinaus (geht nicht)
- Inlining von Methoden, die auf Referenzen geringerer Sichtbarkeit zugreifen (geht nicht)
- Inlining von Prozeduraufrufen in
While- und
Repeat-Schleifen (geht nicht)
Warum baut Borland die
Inline-Direktive ein, wenn sie in 90% der Fälle nicht genutz werden kann? Dann hätten die das doch eigentlich auch gleich bleiben lassen können???
Für alle die das nicht kennen: Inlining wird in C\CPP meist über Makros realisiert (bzw. über die __inline__-Direktive in der Deklaration einer Routine, um Programme zu beschleunigen, zu Lasten der Dateigröße. Dabei wird der Source einer
Procedure\
Function einfach an den benötigten Stellen in eine andere Routine eingebettet, anstatt diese aufzurufen. Das erspart CALL-Instructions und beschleunigt dadurch das Programm, da der Prozessor seinen L1\Instruction-Cache nicht ständig neu aufbauen muss.
P.S.: Einige Ausnahmen sind nachvollziehbar ...
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.