![]() |
Inline und Asmblock unter TD2006: Problem
Wie löst Ihr das INLINE Problem mit Assemblerroutinen.
Ich möchte eine Routine
Delphi-Quellcode:
In TD2006 einfügen. Dies wird aber leider mit einer fehlermeldung honoriert: "Inline Function darf keinen Asmblock haben." In der System Unit konnte ich die Pos mit einem INLINE versehen. Aber ob die überhaupt mitcompiliert wird?
Procedure X;INLINE;
asm //...CODE end; Habt Ihr schon einen "Trick"? :gruebel: 2x die Eingabe bei der DP abgestürzt. Daher nur noch meine "Kurzfassung." |
Re: Asmblock unter TD2006 Problem
Ähm lass einfach das INLINE weg? :gruebel:
|
Re: Asmblock unter TD2006 Problem
Das Inline bringt doch ordentlich Geschwindigkeit. Es fällen doch umfangreiche Sicherungen weg.
Oder willst Du damit sagen das reine Asm code "geinlinet" wird? |
Re: Asmblock unter TD2006 Problem
Was meinst du damit, dass umfangreiche Sicherungen wegfallen?
Inline bedeutet, dass nicht jedesmal zu dem Code gesprungen wird, wenn er aufgerufen wird, sondern dass der Code überall dahin kopiert wird, wo er verwendet wird. |
Re: Asmblock unter TD2006 Problem
Es fallen bei Inline die umfangreichen Registersicherungen weg, die bei Aufrufen von Proceduren Geschwindigkeit kosten. Daher gibt es ja bei "INLINE" keine "Procedurenssprünge" mehr.
|
Re: Asmblock unter TD2006 Problem
Bei inline-Methoden kopiert der Compiler den nötigen Maschinencode dorthin, wo normalerweise der Aufruf stünde. Assemblercode hat dort nix zu suchen, weil du da mit 100% Wahrscheinlichkeit mehr Schaden anrichten würdest als du Nutzen daraus ziehen könntest.
Darum: Assembler nur ohne inline. Oder kein Assembler. |
Re: Asmblock unter TD2006 Problem
Bin gespannt was Pos aus der Systemunit im Vergleich zu der aus FastCode Projekt unter TD2006 macht.
Unter D7 war 50% bis 70% Steigerung drin. Allein die AnsiStrAtPos aus der DP ist genial. Ist ein Ersatz zu Uppercase und Pos. Da muss ich noch mal testen, ob sich der Einbau von Fastcodes unter DP sich wirklich noch lohnt. |
Re: Asmblock unter TD2006 Problem
Zitat:
|
Re: Asmblock unter TD2006 Problem
lol?!
also die Direktive inline wurde mit D2005 eingeführt. Und sorgt dafür, dass der Compiler, wann immer es irgendwie möglich ist, ein inlining vornimmt. vielleicht macht er das ja jetzt schon selbstständig und "braucht" die Direktive nicht mehr. |
Re: Asmblock unter TD2006 Problem
Also:
Pos aus FastCode (die schnellste Version) ist ca. 10% schneller als die Pos aus TD2006 Unit System. Uppercase aus FastCode (auch hier die schnellste Version verwendet) ist 20% langsamer als das Uppercase aus der TD2006 UNIT. Ich glaubte, das mit Inline noch etwas rauszuholen sei. Da bin ich wohl im Irrtum. Es reicht auch so. Interssant wird es, meiner Meinung nach, wenn man Uppercase und Pos durch eine Assblerprocedure ersetzt. Aber ich glaube, dass eine gute Procedure ohnen ASM, die beides zusammenfasst, kaum langsamer sein wird. Der Compiler optimiert zu optimal. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:35 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