Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   ASM vs Delphi (https://www.delphipraxis.net/38224-asm-vs-delphi.html)

Kryoko 16. Jan 2005 13:41


ASM vs Delphi
 
Hi.

Wollte mal wissen was schneller ist :

Delphi-Quellcode:
function VectorSetValue(const Value:Single): TVector3D;
begin
  Result.X := Value;
  Result.Y := Value;
  Result.Z := Value
end;
oder
Delphi-Quellcode:
function VectorSetValue(const Value:Single): TVector3D;
asm
  FLD Value
  FSTP Result.X
  FLD Value
  FSTP Result.Y
  FLD Value
  FSTP Result.Z
end;
Jemand ne Idee ?

SirThornberry 16. Jan 2005 13:44

Re: ASM vs Delphi
 
führe das ganze in einer Schleife 1 000 000 mal aus und messe die zeit, dann weißt du es genau

sakura 16. Jan 2005 13:52

Re: ASM vs Delphi
 
Zitat:

Zitat von SirThornberry
führe das ganze in einer Schleife 1 000 000 mal aus und messe die zeit, dann weißt du es genau

Und anschließend teste noch folgende, welche imo die schnellste sein sollte:
Delphi-Quellcode:
function VectorSetValue(const Value:Single): TVector3D;
asm
  mov edx, Value
  mov [eax], edx
  mov [eax + $04], edx
  mov [eax + $08], edx
end;
Deren Ergebnis ist i.A. identisch zur Pascal-Lösung, verzichtet aber auf das wiederholte Laden des Übergabewertes.

Deine Lösung sollte spürbar langsamer sein, da Du auf die Befehle des Co-Prozessor zurückgreifst, während der Code von Delphi ohne diesen auskommt und einfach die Speicherwerte kopiert :zwinker:

...:cat:...

Kryoko 16. Jan 2005 13:54

Re: ASM vs Delphi
 
humm...je mehr es wird desto geringer später der unterschied...naja...asm ist erstmal schneller -
:P

_Sebastian_ 16. Jan 2005 13:55

Re: ASM vs Delphi
 
Zitat:

Zitat von SirThornberry
führe das ganze in einer Schleife 1 000 000 mal aus und messe die zeit, dann weißt du es genau

optimiert da nicht der kompiler dazwischen wenn man das einfach so inner schleife ablaufen lässt?

sakura 16. Jan 2005 14:00

Re: ASM vs Delphi
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Kryoko
humm...je mehr es wird desto geringer später der unterschied...naja...asm ist erstmal schneller -
:P

Kann ich nicht bestätigen, aber ich weiß auch nicht wie Du gemessen hast. Anbei mal eine Sample-App mit den drei Methoden. Delphis (1) und meine (3) sind nahezu identisch, Deine (2) ca. 60% langsamer.

...:cat:...

sakura 16. Jan 2005 14:01

Re: ASM vs Delphi
 
Zitat:

Zitat von _Sebastian_
optimiert da nicht der kompiler dazwischen wenn man das einfach so inner schleife ablaufen lässt?

Nicht bei Funktionsaufrufen, aber schau mal in meine Lösung, die garantiert dass da nix mit Optimierung läuft ;-)

...:cat:...

Oxmyx 16. Jan 2005 14:05

Re: ASM vs Delphi
 
Zitat:

Zitat von Kryoko
humm...je mehr es wird desto geringer später der unterschied...naja...asm ist erstmal schneller -
:P

Delphi erzeugt auch nur Assemblercode, und bei einer einfachen Zuweisung würde ich dem Delphi-Compiler vertrauen, dass der effizienteste Code erzeugt wird.

sakura 16. Jan 2005 14:07

Re: ASM vs Delphi
 
Zitat:

Zitat von Oxmyx
und bei einer einfachen Zuweisung würde ich dem Delphi-Compiler vertrauen, dass der effizienteste Code erzeugt wird.

Er hat aber eine dreifache Zuweisung der gleichen Variablen und hier hat Delphi einen Nachteil, es lädt die Variable auch drei Mal :roll: Ansonsten ist Delphi in diesem Fall aber wirklich viel schneller, da einfach nur Speicher kopiert wird und nicht auf Co-Prozessor Befehle gesetzt wird.

...:cat:...

dizzy 16. Jan 2005 14:54

Re: ASM vs Delphi
 
Gibt es zu FSTP nicht auch die Variante ohne "Pop"? Dann ließe sich das ewige nachladen verhindern.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:20 Uhr.
Seite 1 von 3  1 23      

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