Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.155 Beiträge
 
Delphi 12 Athens
 
#3

AW: Memory Mapped Files bei vielen (großen) Bitmaps

  Alt 8. Feb 2016, 12:32
SaveToFile speichert zuerst in den WindowsFileCache und Windows schiebt es auf die Festplatte. Es bleibt dann auch im Cache, so lange wie möglich.
Wenn der RAM reicht, wird die Festplatte kein Flaschenhals sein.

MMF mit Dateianbindung, mappt es in den "physischen" RAM, wenn der Platz reicht und der REST bleibt auf der Festplatte. (in der Datei)
Bei MMF ohne Datei bleibt es im physischen RAM oder landet in der Auslagerungsdatei (Festplatte).

Speicherseiten im Virtuellen Arbeitsspeicher bleiben immer da, wo man sie hingemappt hat, aber aber ob sie "aktuell" im physischen Speicher geladen sind, hängt davon ab, ob man darauf zugreift und ob genügend physischer Speicher zur Verfügung steht.

Fazit: Du kannst nur durch MMF rein garnichts verbessern.
Außer zusätzlich zum physischen RAM auch noch deinen Virtuellen vollzumüllen (PS: Bei einem 32-Bit-Programm hast du da nur maximal 2 bis 3 GB RAM zur Verfügung)

Und dein Flaschenhals ist eigentlich der zu geringe Arbeitsspeicher.



PS: PNG hat zwar eine "gepackte" Version des Bildes, aber es existiert auch intern eine entpackte Version (Bitmap), vorallem wenn man das PNG fisch erstellt hat (neu generiert und bemalt) oder darin rummalt.
TPngImage.GetHeader{TChunkIHDR}.FreeImageData
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 8. Feb 2016 um 12:40 Uhr)
  Mit Zitat antworten Zitat