Einzelnen Beitrag anzeigen

Schwedenbitter

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

Memory Mapped Files bei vielen (großen) Bitmaps

  Alt 8. Feb 2016, 12:20
Hallo,

ich bin dabei, ein Programm für eine Dokumentenverwaltung zu schreiben. Über einen Seitenscanner werden große Datenmengen geliefert. Diese wollte ich irgendwo auslagern, um den RAM zu schonen. Bei 300 dpi in DINA-A4 sind das 16 MB pro Seite. Zusätzlich soll der Benutzer die Möglichkeit haben, Kontrast und Kompressionsstärke bei jpg anzupassen.
Aktuell "löse" ich das über ein simples TBimap.SaveToFile(); . Bei/vor dem Verarbeiten lade ich dann das betreffende Bitmap zurück. Dabei zeigt sich die HDD - wer hätte das auch anders gedacht - als Flaschenhals.

Dadurch kamen MMF ins Spiel. Diese bleiben auch im RAM und werden erst (in der Auslagerungsdatei?) ausgelagert, wenn dieser voll ist - sofern ich das System richtig verstanden habe.
Allerdings kam mir dabei die Überlegung, dass Windows doch sowieso in die Auslagerungsdatei schreibt, wenn der RAM aufgebraucht ist. So richtig sehe ich also keinen Vorteil. Es kommt hinzu, dass MMF programmtechnisch aufwendig sind, insbesondere weil die Größe beim Schreiben/Lesen feststehen muss und diese von Bitmap zu Bitmap unterschiedlich ist.

Ich bin jetzt also am Grübeln, ob ich mir das antue und wüsste gern Eure fachkundige Meinung dazu.

Wie es funktioniert, habe ich mir erarbeitet und auch ein klitzekleine Funktionieren Class von TBitmap abgeleitet. Bevor ich aber weiter mache, stelle ich lieber mal diese Frage.
Falls ich hier falsch bin und die Frage eher zu "Win32/Win64 API (native code)" gehört, kann das bitte mal der Moderator erledigen. Danke.
Alex Winzer
  Mit Zitat antworten Zitat