AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ASM vs Delphi

Ein Thema von Kryoko · begonnen am 16. Jan 2005 · letzter Beitrag vom 17. Jan 2005
Antwort Antwort
Seite 1 von 3  1 23      
Kryoko
(Gast)

n/a Beiträge
 
#1

ASM vs Delphi

  Alt 16. Jan 2005, 13:41
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 ?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: ASM vs Delphi

  Alt 16. Jan 2005, 13:44
führe das ganze in einer Schleife 1 000 000 mal aus und messe die zeit, dann weißt du es genau
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: ASM vs Delphi

  Alt 16. Jan 2005, 13:52
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

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Kryoko
(Gast)

n/a Beiträge
 
#4

Re: ASM vs Delphi

  Alt 16. Jan 2005, 13:54
humm...je mehr es wird desto geringer später der unterschied...naja...asm ist erstmal schneller -
  Mit Zitat antworten Zitat
_Sebastian_

Registriert seit: 22. Jul 2004
Ort: Lübeck
72 Beiträge
 
Delphi 2010 Professional
 
#5

Re: ASM vs Delphi

  Alt 16. Jan 2005, 13:55
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?
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: ASM vs Delphi

  Alt 16. Jan 2005, 14:00
Zitat von Kryoko:
humm...je mehr es wird desto geringer später der unterschied...naja...asm ist erstmal schneller -
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.

......
Angehängte Dateien
Dateityp: zip project1_110.zip (2,3 KB, 27x aufgerufen)
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: ASM vs Delphi

  Alt 16. Jan 2005, 14:01
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

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Oxmyx

Registriert seit: 21. Sep 2004
499 Beiträge
 
#8

Re: ASM vs Delphi

  Alt 16. Jan 2005, 14:05
Zitat von Kryoko:
humm...je mehr es wird desto geringer später der unterschied...naja...asm ist erstmal schneller -
Delphi erzeugt auch nur Assemblercode, und bei einer einfachen Zuweisung würde ich dem Delphi-Compiler vertrauen, dass der effizienteste Code erzeugt wird.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: ASM vs Delphi

  Alt 16. Jan 2005, 14:07
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 Ansonsten ist Delphi in diesem Fall aber wirklich viel schneller, da einfach nur Speicher kopiert wird und nicht auf Co-Prozessor Befehle gesetzt wird.

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: ASM vs Delphi

  Alt 16. Jan 2005, 14:54
Gibt es zu FSTP nicht auch die Variante ohne "Pop"? Dann ließe sich das ewige nachladen verhindern.
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:27 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