![]() |
file mapping object
Was hat es damit auf sich? Was ist ein file mapping object und wozu benutzt man es?
|
Memory Mapped Files sind ein Mechanismus, Dateien im Speicher zu bearbeiten.
Dabei wird die Datei vollständig in den Speicher geladen und von deiner Anwendung ein soganannter View auf dieses Speicherbereich (global, btw) benutzt, um Teile der Datei aus dem Speicher in den prozesseigenen Speicher zu befördern. das können nur einzelne Teile der Datei sein, oder auch die ganze. Diesen Speicherbereich kannst du bearbeiten wie du willst und durch flushen des Maps die Änderungen sofort in den View übernehmen. Die Daten werden aber nicht in die Datei auf der Festplatte geschrieben, sondern nur in die Filemap im globalen Speicher. Das Ganze hat den Vorteil, daß du, wenn du viele zufällige Dateizugriffe hast, die Festplatte nicht unnötig belastest. Der Arbeitsspeicher ist viel schneller als die Festplatte, und somit bleibt zum einen Festplattenleistung für andere Dinge übrig (Windows, Multitasking, auch wenn's nicht immer klappt, sollte mand ran denken...) und deine Operationen laufen im Endeffekt schneller ab. Das lohnt sich aber wirklich nur, wenn du die Daten oft verändern musst, z.B. für datenbankartige Anwendungen. Luckie wollte z.B. seinen Filesplitter auf Memory Mapped Files umstellen, da dabei nur die Datei sequenziell gelesen bzw geschrieben wird, was so oder so sein muss, hätte sich das nicht gelohnt, eher im Gegenteil, der Speicherbedarf wäre ohne Performancegewinn angestiegen. Ein File Mapping Object erzeugst du mit der Funtkion CreateFileMapping, die als Datei keine Pfadangabe sondern ein Dateihandle annimmt, die Datei musst du also schon selbst geöffnet haben. Im PSDK findest du das Thema File Mapping unter: Base Services -> Storage -> Storage Overview -> File Management -> File Mapping |
Moin Zusammen,
ausserdem hatte ich hier mal eine einfache Kompo für FileMapping gepostet. Unter dem Suchbegriff CreateFileMapping sollte die eigentlich schnell zu finden sein. |
Und wenn man sich die
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:14 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