AW: Delphi 64 Bit langsamer als 32 Bit
Zitat:
Integer unter 64-Bit: der erste Wert wird aus dem Stack in ein Register geladen und der zweite mit add direkt aus dem Stack hinzuaddiert Int64 uner 64-Bit: beide Werte werden aus dem Stack in Register geladen und dann addiert Insgesamt generiert der 64-Bit Compiler eher mehr Assemblerbefehle als der 32-Bit Compiler. Was aber wirklich die Performance reduziert, ist, dass die aktuellen Planungen dazu führen, dass eher reines Object Pascal benutzt wird. Das heißt wo es für 32-Bit assembleroptimierte Routinen gab, ist das für 64-Bit in der Regel nicht mehr so, insbesondere bei Stringroutinen. Das kostet allerdings selbst bei Benchmark oft nur wenige Prozentpunkte, so viel langsamer ist das meistens nicht. Schneller ist man bei 64-Bit, wenn es um viele Fließkommaoperationen geht. Solche Berechnungen sind durch die Multimedia-Befehle der CPU deutlich schneller. Dass 64-Bit oft langsamer ist, ist aber nicht nur bei Delphi so, das sieht man auch bei Java oder C++ z.B., aber der Irrglaube, dass man unbedingt 64-Bit braucht und da alles besser ist, hält sich leider (auch bei manchen hier im Forum) hartnäckig. In der Realität ist es für den Großteil der Projekte aber eher ein Nachteil. |
AW: Delphi 64 Bit langsamer als 32 Bit
Zitat:
Zitat:
Vielleicht erinnerst du dich noch: Ich hatte mal vor einiger Zeit einen Test gemacht mit Delphi XE2, und zwar ging es da um das Ausführen von Locate-Befehlen und setzen von IndexFieldNames beim Start einer Anwendung. Da waren die 64-Bit-Kompilationen größtenteils schneller als die 32-bittigen (Angaben im ms): Testreihe mit Sortierung und Lokalisierung beim Start *** Debug 32 IDE ********** DatMod.Verbinden_Tabellen 50 Set_Einstellungen 27790 *** Release 32 IDE ********** DatMod.Verbinden_Tabellen 48 Set_Einstellungen 27967 *** Debug 64 IDE ********** DatMod.Verbinden_Tabellen 47 Set_Einstellungen 24026 *** Release 64 IDE ********** DatMod.Verbinden_Tabellen 47 Set_Einstellungen 24489 *** Debug 32 EXE ********** DatMod.Verbinden_Tabellen 46 Set_Einstellungen 23111 *** Release 32 EXE ********** DatMod.Verbinden_Tabellen 49 Set_Einstellungen 22823 *** Debug 64 EXE ********** DatMod.Verbinden_Tabellen 46 Set_Einstellungen 19745 *** Release 64 EXE ********** DatMod.Verbinden_Tabellen 45 Set_Einstellungen 20034 Getestet wurde die Zeit, die zum Verbinden mehrerer Tabellen benötigt wird (MyQuery.Open), wenn IndexFieldNames einen Wert hat und im select ein Order-Befehl steht. Wieso das bei den 64-Bit-Versionen schneller war, weiß ich nicht. Fließkommaberechnungen finden dabei ja wohl kaum statt. Oder etwa doch? |
AW: Delphi 64 Bit langsamer als 32 Bit
Ich weiß nicht, was bei Datenbanklogik bei Delphi im Hintergrund abläuft und wie du die Zeit gemessen hast, aber Delphis abenteuerlicher Typ
Delphi-Quellcode:
ist ja ein Double :-)
TDateTime
|
AW: Delphi 64 Bit langsamer als 32 Bit
Zitat:
Wie kommst du jetzt auf TDateTime? Bei den Tabellen, die ich damals getestet hatte, kommt kein TDateTime vor, wie ich gerade noch einmal überprüft habe. Das sind alles Integer- und VarChar-Felder. |
AW: Delphi 64 Bit langsamer als 32 Bit
Ich habe mit DBs Null Erfahrung, ich weiß ja nicht, was tatsächlich zwischen Client und Server kommuniziert wird, Zeitstempel für Transaktionen und so. Vielleicht ist es auch einfach noch zu früh am Morgen. :drunken:
|
AW: Delphi 64 Bit langsamer als 32 Bit
Zitat:
Delphi-Quellcode:
verwendet, weil er glaubte, dadurch je nach Platform einen 32bit bzw. 64bit Integer zu haben.
Integer
|
AW: Delphi 64 Bit langsamer als 32 Bit
Zitat:
"In Win64, the precision of floating-point computations was reduced from extended (10-byte values) to double (8-byte values)." |
AW: Delphi 64 Bit langsamer als 32 Bit
Hallo,
Zitat:
Beim Intel C++ Compiler und bei VC++ gibt es Autovektorisierung und -parallelisierung. http://en.wikipedia.org/wiki/Automat...ion#Techniques http://msdn.microsoft.com/de-de/library/hh872235.aspx Dann gibt es noch entsprechende Bibliotheken, bei Intel die Threading Collections und TBB, bei MS die PPL. Hier ein lesenswertes EBook dazu: http://msdn.microsoft.com/en-us/library/gg675934.aspx Das skaliert, auch wegen des Caches, nicht mit der Anzahl der Kerne, aber z.B. ein Faktor 3-4 bei einem 8-Kern-Prozessor gegenüber einer Single-Thread-Lösung sind üblich. Was auch noch helfen kann, wäre Profile Guided Optimization, das haben diverse C++ Compiler. http://blogs.msdn.com/b/vcblog/archi...ation-pgo.aspx |
AW: Delphi 64 Bit langsamer als 32 Bit
Zitat:
|
AW: Delphi 64 Bit langsamer als 32 Bit
Hallo zusammen,
vielen Dank für die vielen großteils sehr informativen Antworten. Sehr interessant fand ich die Aussage von Jaenicke: Zitat:
Das ganze beobachte ich aber schon seit dem Zeitpunkt wo alle geschrien haben, dass Delphi tot sei und es nie einen 64 Bit Delphi Compiler geben würde. Ab da wurde leider für mich auch mit Delphi alles etwas schlechter (Delphi ist aber für mich immer noch die beste Alternative). Dann kam der ganze (sorry) Quatsch mit iOS usw. Lieber als 64 Bit, iOS usw. wäre mir eine stabilere Umgebung (speziell Refactor und Co) gewesen. Ich beobachte schon lange wie Delphi sich wandelt. Ständig soll man Updates kaufen in denen noch die Fehler der Vorversionen enthalten sind aber Unmengen an Funktion (die ich leider nicht brauche) hinzugekommen sind. Aber ich schweife ab... Nochmals vielen Dank :dance: für eure aufschlussreichen Antworten und einen schönen Arbeitstag. Alex :-D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:52 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