Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   x64 : very large bitmaps (https://www.delphipraxis.net/165055-x64-very-large-bitmaps.html)

bernhard_LA 13. Dez 2011 08:26

x64 : very large bitmaps
 
unter http://www.efg2.com/Lab/Graphics/VeryLargeBitmap.htm gibt es das delphi very large bit map experiment , Stand Win95 .... XP also alles 32 bit und aus der Steinzeit der EDV :-)

Hat jemand Erfahrung über die Limits von TBitMap unter XE2 und x64 ?

Ich habe TBitmaps im pf24bit Mode, ca. 20k * 20 k Pixel, Filesize ~ 1,5 GByte schon geladen; Unser Wunsch 100 k x 100 k bei entsprechendem Speicherausbau der Hardware

mkinzler 13. Dez 2011 08:39

AW: x64 : very large bitmaps
 
Ich finde es wenig sinnvoll den Speicher mit ca. 30GB pro Bild vollzustoppen. Wozu benötigst du das komplette Bild im Speicher?

Iwo Asnet 13. Dez 2011 08:40

AW: x64 : very large bitmaps
 
Könnte beim durchnudeln schneller gehen.

mkinzler 13. Dez 2011 08:42

AW: x64 : very large bitmaps
 
Das ist die Frage, was man machen will.

Aphton 13. Dez 2011 09:45

AW: x64 : very large bitmaps
 
Man könnte partiell auslesen - sprich Bildausschnitte.
Dadurch hat man dann auch keine Probleme mit dem Arbeitsspeicher, sofern dieser Ausschnit selbst nicht wieder gewaltig groß ist. Ist recht flott programmiert.
Was willst du damit machen?

bernhard_LA 13. Dez 2011 11:41

AW: x64 : very large bitmaps
 
Kurze Anmerkung zur Anwendung :

* ja zur Laufzeit beim Anwender verwenden wir kleinere Bilder an die Screenauslösung angepasst ..... mit deutlich weniger Speicherhunger

Für die Evaluierung und Weiterentwicklung unserer Software benötige ich kurzfristig mal 100k x 100k Bilder ...
kann ich meinen PC auf 16 oder 32 or 64 GBYTE RAM aufrüsten und dann diese Bilder laden ?

mkinzler 13. Dez 2011 11:45

AW: x64 : very large bitmaps
 
Da reicht dann ein normaler PC nicht mehr, da die meisten "Consumer"-Mainboards nicht so viel Speicher unterstützen.

BUG 13. Dez 2011 12:56

AW: x64 : very large bitmaps
 
Zitat:

Zitat von mkinzler (Beitrag 1141130)
Da reicht dann ein normaler PC nicht mehr, da die meisten "Consumer"-Mainboards nicht so viel Speicher unterstützen.

Mhm, eigentlich sollte es doch reichen, genug virtuellen Speicher zu haben. Das was dann nicht in den physischen Speicher passt, darum kümmert sich das Betriebssystem (afaik ist der Adressraum höchsten 2^48 Byte groß (wegen nur 48 Adressleitungen), deine paar Gigabyte sollten aber locker in den Adressraum passen). Dann muss die Auslagerungsdatei aber groß genug sein dürfen.

Ob TBitmap so große Bilder unterstützt müsste wohl jemand in den Code gucken.

Neutral General 13. Dez 2011 13:00

AW: x64 : very large bitmaps
 
Hallo,

Also ich weiß nicht ob Windows es schafft bei 4GB RAM oder so eine 30GB Datei zu laden.
Ich befürchte da wird Windows entweder streiken oder dein Computer wird soooo dermaßen ar...-lahm dass du damit nicht mehr vernünftig arbeiten kannst.

Ich glaube da stößt man irgendwo an die Grenzen von Paging.

BUG 13. Dez 2011 13:08

AW: x64 : very large bitmaps
 
Zitat:

Zitat von Neutral General (Beitrag 1141151)
dein Computer wird soooo dermaßen ar...-lahm dass du damit nicht mehr vernünftig arbeiten kannst.

Kommt darauf an, wenn auf dem Bild dann wieder eher lokal (in einer Zeile) gearbeitet wird, könnte es funktionieren.

Aber vermutlich ist es auch dann sinnvoll, das Bild beim Einlesen in einigermaßen vernünftig große Happen (z.B. Pagegröße) zu zerteilen. Sonst hast du bei jedem Wechsel einer Zeile einen Pagefault.

Medium 13. Dez 2011 13:18

AW: x64 : very large bitmaps
 
Das Problem ist viel mehr, dass die GDI nicht mehr als 65536x65536 Pixel große Bilder verpackt (ich meine das ist die Größe, die mir im MSDN mal über den Weg lief). Und da TBitmap intern über GDI Resourcen läuft, kann man so viel Speicher und Auslagerungsplatz haben wie man will - es wird nicht gehen. Lösung: Das Bild manuell aus einem FileStream schlabbern und interpretieren, unter völligem Verzicht der GDI (TBitmap und Konsorten). Mit TBitmap wird es bei den Größen nur mit Teilbildern gehen, die dann aber auch zumindest über einen eigenen Loader nach obiger Art gefüttert werden müssten, um das wird man nicht herum kommen fürchte ich.

bernhard_LA 13. Dez 2011 21:04

AW: x64 : very large bitmaps
 
aktueller Stand der Forschung :

WIN7 x64 PROF - 8 GBYTE RAM - SERVER MAIN BOARD (32 GBYTE MAX RAM CONFIG) 2 Bilder mit je 2 GBYTE als TBitmap gleichzeitig geladen -
- COMPILER DELPHI XE 2 --> kein Problem kann beide Bilder flüssig scrollen , speed OK



Gibt es keine Spec für TBitmap, TJpef, TifImage .... ab wann es in der aktuellen Implementierung bei XE 2 kracht oder
muss ich den Speicher aufrüsten und selber probieren ???

bernhard_LA 13. Dez 2011 21:23

AW: x64 : very large bitmaps
 
GDI nicht mehr als 65536x65536 Pixel große Bilder

OK , Windows ist wohl ein Low End Betriebssystem für meine Anwendung ... macht es Sinn auf UNIX zu wechseln ?
Kann ich hier mehr Pixel pro Bild bekommen?

Medium 13. Dez 2011 21:30

AW: x64 : very large bitmaps
 
Wie gesagt: Wenn du 100k*100k Bilder brauchst, bist du mit TBitmap schnell am Ende. 65536^2*4 Bytes = 17.179.869.184 Bytes = 16.777.216 kB = 16.384 MB = 16 GB

Bis 16GB, wenn keine Dimension >65536 Pixel ist, spielt zumindest die GDI mit. Alles weitere ist Implementationsspezifisch, weswegen ich für den Extremfall noch immer für die eigene Lösung plädiere. Vor allem, wenn deine Bilder größer als diese Grenze werden, was sie laut deiner Aussage ja fast um den Faktor knapp 2 (je Dimension, nach Datenmenge knapp Faktor 4) wären. Fazit: Mit der Größe, die dir vorschwebt, bist du sobald TBitmap (bzw. ein HBITMAP der WinAPI) als Gesamt-Bild-Container ins Spiel kommt auf verlorenem Posten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13: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