AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Vorteil von 64bit bei Grafikoperationen
Thema durchsuchen
Ansicht
Themen-Optionen

Vorteil von 64bit bei Grafikoperationen

Ein Thema von Schwedenbitter · begonnen am 16. Sep 2015 · letzter Beitrag vom 17. Sep 2015
Antwort Antwort
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#1

Vorteil von 64bit bei Grafikoperationen

  Alt 16. Sep 2015, 09:16
Hallo,

ich möchte gern Bilder über einen Scanner in den PC bekommen und weiterverarbeiten. Das bekomme ich mit Delphi hin. Der PC hat ein 64bit-OS, während der Scanner nur 32bit-Treiber mitbringt. Auch bei angepassten TWAIN-DLLs klappt es nicht. Meine Idee ist jetzt, ein 32bit-Modul zu schreiben und die Bitmaps dann per MMF dem 64bit-Hauptprogramm zu übergeben - soweit der Plan.

Bevor ich mich an dieses für meine Kenntnisse Mamut-Projekt wage, wollte ich aber testen, ob mir 64bit einen Vorteil bringt. Das scheint nicht der Fall zu sein. Ich habe quick and dirty einen Test geschrieben. Multi-Threading bringt im Gegensatz zur reinen VCL mit Blocks und Single-Thread einen Vorteil von rund 50% - allerdings sowohl in 32bit als auch 64bit. Ich arbeite schon mit Scanline, was ich so zu diesem Thema gefunden habe.

Daher meine Frage, wie bzw. ob man überhaupt einen Vorteil aus 64bit ziehen kann?

Ich möchte keine Komponenten von Drittanbietern haben. Wenn es also mit einem puren Delphi out of the box nicht klappt, würde ich es lassen. Ich finde nur nichts zu dem Thema oder mir fallen bloß nicht die richtigen Suchbegriffe ein Den Code (ohne "_TestBild.bmp") habe ich mal angehängt, um zu zeigen, was mein Ziel ist.
Angehängte Dateien
Dateityp: zip MultiThread.zip (1,7 KB, 10x aufgerufen)
Alex Winzer
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#2

AW: Vorteil von 64bit bei Grafikoperationen

  Alt 16. Sep 2015, 22:49
Der einzige Vorteil, den man ausser in Spezialfällen aus 64 Bit zieht, ist meiner Meinung nach einfach nur der größere Addressraum. Wenn du mit den 2GB von 32 Bit hin kommst, bringt ein einfaches Umschalten auf 64 Bit bestenfalls kaum merkbare Unterschiede (und ggf. sogar auch minimale Verlangsamung).

Der einzige Weg da direkt einen Vorteil draus zu ziehen wäre, wenn du deinen Code von Hand darauf hin auslegst. So könnte man in einem 64 Bit Integer z.B. zwei TrueColor Farbwerte gleichzeitig verarbeiten. Das bringt aber nur etwas, wenn man direkt mit einem zweiten "Doppelfarbwert" rechnet. Und das geht nicht immer so ohne Probleme, da natürlich Überläufe zwischen den Kanälen und Farben passieren können, wenn man arithmetische Dinge tut.
Wenn ich nicht irre ist der Delphi-Compiler bei 64 Bit auch nicht darauf aus, das letzte heraus zu holen. Wirkliche Vorteile auf dieser Ebene verschafft man sich fast nur noch durch Nutzen von MMX/SSE, aber da heisst es dann Assembler schreiben, und natürlich adé Multiplatform.

Wenn du spezifische Operationen, am besten mit ein paar Codefetzen nennste, die dir langsam vorkommen, können wir aber ggf. dennoch Ideenreich werden hier. (Das gesamte Projekt habe ich mir jetzt nicht zu Gemüte geführt, zumal auf der Heimkiste kein Delphi mehr ist. Besser dann wirklich über genaue Problemstellen schnacken.)
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
SMO

Registriert seit: 20. Jul 2005
178 Beiträge
 
Delphi XE6 Professional
 
#3

AW: Vorteil von 64bit bei Grafikoperationen

  Alt 16. Sep 2015, 23:42
Der einzige Vorteil, den man ausser in Spezialfällen aus 64 Bit zieht, ist meiner Meinung nach einfach nur der größere Addressraum. Wenn du mit den 2GB von 32 Bit hin kommst, bringt ein einfaches Umschalten auf 64 Bit bestenfalls kaum merkbare Unterschiede (und ggf. sogar auch minimale Verlangsamung).
Sehe ich nicht so. Der 64 Bit Delphi-Compiler ist moderner und erzeugt im Allgemeinen "besseren" Maschinencode, hat mehr Register zur Verfügung, und benutzt dabei auch SSE/SSE2 für Floating-Point-Operationen (siehe auch $EXCESSPRECISION - sollte man auf OFF setzen, wenn man hauptsächlich Single statt Double nutzt).
Ich habe vor einer Weile mal einen kleinen 3D Software-Renderer programmiert, da hat ein einfaches Umschalten von 32 auf 64 Bit einen merklichen Geschwindigkeitsvorteil ergeben, ohne spezielle Anpassungen. Bei anderen Anwendungsfällen können die Unterschiede natürlich weniger drastisch sein.

Übrigens, wenn man ein Delphi-Programm für 32 Bit mit der Direktive {$SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE} kompiliert, dann bekommt es in einem 64 Bit Windows-System die vollen 4 GB des 32 Bit Adressraums zur Verfügung, nicht nur 2 GB (die Konstante IMAGE_FILE_LARGE_ADDRESS_AWARE ist in Windows.pas deklariert, Wert $0020). Dabei muss man natürlich darauf achten, dass der eigene Code keine Probleme mit Pointern hat, die über 2 GB liegen.

Geändert von SMO (16. Sep 2015 um 23:59 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#4

AW: Vorteil von 64bit bei Grafikoperationen

  Alt 17. Sep 2015, 21:50
Oh, dass der 64 Bit Compiler "schon" SSE kennt wusste ich noch gar nicht. Leider bringt das im Falle des TEs nicht wirklich Vorteile, da man beim Umgang mit Bitmaps (ausser man rechnet intern bewusst mit Float-Precision wie Photoshop oder so) praktisch keine Floats benutzt. Das Mehr an Registern kann übrigens schnell vom höheren Aufwand bei Speicherzugriffen in voller Breite (Pointer z.B.) gekontert werden. Es ist halt extrem stark sogar nicht nur vom Einsatzzweck, sondern auch der ganz konkreten Implementierung abhängig wie viel man von der Umstellung nachher hat.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  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 07:19 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