AGB  ·  Datenschutz  ·  Impressum  







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

Delphi 64 Bit langsamer als 32 Bit

Ein Thema von BigAl · begonnen am 6. Aug 2013 · letzter Beitrag vom 12. Aug 2013
Antwort Antwort
Robotiker
(Gast)

n/a Beiträge
 
#1

AW: Delphi 64 Bit langsamer als 32 Bit

  Alt 7. Aug 2013, 08:58
[QUOTE=jobo;1223793]
1. Wie weit sind solche number crunching Geschichten übertragbar auf ein "komplexes" Programm (IE, usw), meinetwegen eingeschränkt auf CPU/Grafik?
Das ist wirklich schwer zu sagen, "komplexe Programme" sind alle sehr unterschiedlich.

Vielleicht mal ein konkretes Beispiel
http://www.innovmetric.com/polyworks...d.aspx?lang=en
Das ist in VC++ geschrieben, es gibt eine 32- und 64-Bit Version. Man braucht die 64-Bit Version schon, wegen der großen Datenmenge, deshalb verwendet man selten auf Rechnern mit 64-Bit Betriebssystem noch die 32-Bit Variante. Ob die dann noch etwas schneller wäre, müsste man mal testen, gefühlt ist sie es nicht.


Ansonsten kann ich von einigen eigenen Libs berichten, die sich mit dem C++ Builder, VC++ und Intel C++ übersetzen lassen, alles 32 Bit.

Derselbe Code mit VC++ oder Intel übersetzt ist schon mal deutlich (30 - 70 %) schneller, als mit dem zugegeben uralten 32-Bit Borland Compiler (in XE2, was neueres habe ich nicht).

Bei wirklich numeriklastigen Sachen ist Intel schneller als MS, aber bei anderen Dingen können kann auch MS vorne liegen oder beide gleichauf. Da der Intel Compiler unter Windows quasi ein Zusatzpaket zu Visual Studio ist, lohnt er sich meist nur, wenn man einen "Nachbrenner" braucht, wenn VC++ nicht mehr hergibt. Das ist bei uns aber eher selten der Fall.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

AW: Delphi 64 Bit langsamer als 32 Bit

  Alt 7. Aug 2013, 09:58
Was hier auch noch nicht gesagt wurde: x64 hat mehr Register. Das kann bei manchen Sachen schon etwas ausmachen, wenn die innerste Schleife komplett in den registern läuft und keinen Cache mehr benötigt.

Hier gab' es auch mal eine interessante Begebnheit: http://stackoverflow.com/questions/17328641 . Hier wurde durch eine kleine Änderung am Code eine zusätzliche Variable alloziert. Im x64 war das zwar unnötig langsam, passte aber alles in die Register. Beim x86 wurde dafür ein Cache Zugriff nötig. In diesem Beispiel war also x64 immer schneller als x86.

Was den x87 angeht: Im 64-bit Modus ist die x87 FPU zwar nicht mehr verfügbar - aber dafür gibt es ja seit geraumer Zeit die SSE Befehle & Co
(Zumindest "hört" man das überall so. Eine genauer Quelle habe ich dafür nicht, und auch keine Lust mich durch die x64 spec zu lesen...)

Geändert von jfheins ( 7. Aug 2013 um 10:08 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: Delphi 64 Bit langsamer als 32 Bit

  Alt 7. Aug 2013, 10:25
Viel schlimmer ist, dass man hier Äpfel mit Birnen vergleicht. Es wird unter 64 bit von Delphi nicht nur anderer Maschinen-Code durch einen zusätzlichen Compiler erzeugt, sondern auch die Funktionalität des zugrundeliegenden Source ist durch $ifdef teils eine ganz andere. Wenn man also einen echten Vergleich machen möchte, darf man nur Aufrufe machen, die sich zwischen 32 und 64 Bit vom Source nicht so stark unterscheiden.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von MEissing
MEissing

Registriert seit: 19. Jan 2005
Ort: Egelsbach
1.384 Beiträge
 
Delphi 12 Athens
 
#4

AW: Delphi 64 Bit langsamer als 32 Bit

  Alt 7. Aug 2013, 11:22
Noch ein Hinweis (unabhängig vom oben dargestellten Problem):
Arbeitet man mit SINGLE Werten und 64-Bit, so werden bei Berechnungen dieser SINGLE Werte die Daten vorher in ein DOUBLE kopiert und anschliessend wieder in ein SINGLE (um genauere Zwischenergebnisse zu bekommen).

Das kann uU schon mal etwas dauern... und unerwünscht sein

Man kann das Verhalten des 64-Bit Compilers aber steuern:
http://docwiki.embarcadero.com/RADSt...elphi_für_x64)

Dadurch bekommt man durchaus mit 64 Bit schnelleren Code, als zB mit 32 Bit (bei rechenintensiven Anwendungen)
Siehe zB hier:
http://delphitools.info/2011/09/05/x...isappointment/
Anschaulich mit Apfelmännchen:
http://delphitools.info/2011/03/24/k...cemonkey-team/

(Der 64 Bit Compiler nutzt SSE2)
Matthias Eißing
cu://Matthias.Eißing.de [Embarcadero]
Kein Support per PN

Geändert von MEissing ( 7. Aug 2013 um 12:00 Uhr) Grund: Fipptehler im Link
  Mit Zitat antworten Zitat
Antwort Antwort


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 03:48 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