Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
Delphi 12 Athens
|
AW: Delphi Datenlogger zerstört CompactFlash (CF) Karten
11. Sep 2012, 12:49
Was loggt denn der Datenlogger?
Nur Zugriffe auf DateiAPIs, die Zugriffe auf den Datenträgercontroler, oder die realen Zugriffe auf die Speicherzellen?
Jupp, beim Öffnen wird das Ende der Datei aisgelesen, dann nochmal darin nach einem "Dateiendezeichen" gesucht, der Zeiger auf das Ende gesett und wenn du dann die Datei schleißt, wird natürlich der komplette Cluster neu beschrieben und womöglich noch ein Annpassung im Volume Bitmap und dann auch noch die Anpassung der Dateigröße und des Änderungsdatums im Verteichnis und womöglich auch noch in allen übergeordneten Verzeichnissen. (Letzteres wurde in Windows 7 mal abgeschafft, vermutlich zum Zeitgewinn und in Hinblick auf SSDs)
Wie stabil läuft denn das System und wie wichtig sind die geloggten Daten?
Erstmal die Datei nicht ständig öffnen/schließen, dann auf Streams ausweichen, welche keine eigene Cache implementieren, so wie so alten Dateifunktionen, womit dann beim Absturz des Programms keine Daten verloren gehen.
Je nach Schreibverhalten und Speicherauslastung werden hier, über die WindowsFileCache, wenn man die Datei nicht ständig schließt, auch die physischen Dateiuzugriffe verringert.
Oder wenn das Schreiben nicht so wichtig ist, dann mit einer größeren eigenen Cache zwischenspeichern und die Dateizugriffe minimieren.
Sind die Daten ganz wichtig, dann müßte man sogar noch die Schreibcache vom Windows und des Datenträgers ausschalten, was aber die realen Zugriffe noch erhöht.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
|