Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Gleitkommadivision im Inline-Assembler (https://www.delphipraxis.net/104870-gleitkommadivision-im-inline-assembler.html)

everdream 12. Dez 2007 00:06


Gleitkommadivision im Inline-Assembler
 
Hallo,
ich überlege ein Programm von mir mit dem Assembler zu optimieren. Assemblerprogrammierung beherrsche ich grundlegend, allerdings habe ich bis jetzt noch nichts mit Gleitkommawerten gemacht.

--> Lohnt es sich überhaupt eine Divisionsfunktion dafür zu schreiben oder kann man da keine Zeit sparen?

Falls es sich lohnt würde ich mich über Ansätze/Beispiele/Links freuen.

Vielen Dank schonmal, everdream :cyclops:

Oxmyx 12. Dez 2007 03:02

Re: Gleitkommadivision im Inline-Assembler
 
Bei einer einfachen Division kannst du nichts optimieren. Im Gegenteil, durch den Methodenaufruf wird das ganze sogar langsamer, als wie wenn du einfach den Compiler das machen lässt, was er am besten kann.

everdream 12. Dez 2007 13:22

Re: Gleitkommadivision im Inline-Assembler
 
Okay, dann werd' ich den Algorithmus wohl erstmal so lassen. Vielen Dank für die Info!

everdream 12. Dez 2007 15:12

Re: Gleitkommadivision im Inline-Assembler
 
Doch nochmal ne Frage... :roll:
Zitat:

durch den Methodenaufruf wird das ganze sogar langsamer
Und wenn ich das ganze ohne Methodenaufruf mache? Ich muss nur an 3 oder 4 Stellen dividieren.

Oxmyx 12. Dez 2007 15:58

Re: Gleitkommadivision im Inline-Assembler
 
Auch dann kannst du keine Verbesserung gegenüber dem Compiler erreichen.

himitsu 12. Dez 2007 16:09

Re: Gleitkommadivision im Inline-Assembler
 
der Compiler über auch nur die Varible/Zahl an due Fließkommaeinheit (FPU) und läßt diese rechnen

da kannst du nichts verbessern, oder was willst du denn da sonst machen?

everdream 12. Dez 2007 16:37

Re: Gleitkommadivision im Inline-Assembler
 
Hab mir noch nich viele Gedanken drüber gemacht wie genaus das dann aussehen soll, aber meißtens sind asm berechnungen doch schneller, oder irre ich mich da?

OregonGhost 12. Dez 2007 16:44

Re: Gleitkommadivision im Inline-Assembler
 
Mit 3DNow! bzw. SSE kannst du deine Fließkommaberechnungen sicherlich etwas beschleunigen, wenn du die Eigenheiten dieser Befehlssätze ausnutzen kannst. Ansonsten ist eine Assembly-Berechnung keineswegs unbedingt schneller und bei Berechnungen, die sich nicht parallelisieren lassen, helfen dir auch SSE und Co. nicht.

himitsu 12. Dez 2007 16:48

Re: Gleitkommadivision im Inline-Assembler
 
Delphi wandelt deinen Pascal-Code auch in ASM-Code um und Delphi kennt ganz viele Optimierungen.

Delphi-Quellcode:
r3 := r1 / r2;

asm
  fld &r1   // r1 > FPU-Register
  fdiv &r2  // FPU-Register := FPU-Register / r2
  fstp &r3  // FPU-Register > r3
  wait     // warten bis FPU fertig mit rechnen ist
end;
da geht nicht's mehr schneller ;)
und Delphi macht es schon so (abgesehn wenn die Variablen noch irgendwohergeladen werden müssen, aber da mußt du es ja auch anders machen)

everdream 12. Dez 2007 17:35

Re: Gleitkommadivision im Inline-Assembler
 
Beim Inline -ssembler stehen mir doch die aktuell gültigen delphi-variablen zur verfügung, oder hab ich da was falsch verstanden? Das würde ja heißen, dass ich die variablen eben nicht extra irgendwo her laden müsste...

Naja, jedenfalls gabt ihr mich davon überzeugt, dass sich in meinem fall eine optimierung per asm wohl nicht lohnt. Danke nochmal für die Antworten!


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:47 Uhr.
Seite 1 von 2  1 2      

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