![]() |
Festplattencache planen
Hi Leute
Ich will in meinem Programm einen Festplattencache integrieren. So nun wie mach ich den des jetzt am besten ist die Frage. Ich hab mir zwar schon was überlegt bin aber noch nicht ganz zufrieden mit meiner idee und jetzt wollt ich mal euch fragen was ihr da so macht/machen würdet. |
Re: Festplattencache planen
Warum das?
|
Re: Festplattencache planen
Weil ich die daten von der festplatte puffern möchte damit falls mal für kurze zeit die festplatte ausgelastet ist immer noch daten zur verfügung stehen warum sonst???
|
Re: Festplattencache planen
Zitat:
einfach NICHTS. I/O-Buffering, Caching etc. etc. werden vom Betriebssystem Windows verwaltet und GEMEINSAM optimiert - jeder Eingriff von Userseite kann die Leistung des Gesamtsystems nur verschlechtern. Das ist nicht nur die Meinung von MS, sondern auch der meisten Fachleute, auch meine, und das liegt nicht daran, dass MS so genial ist, sondern dass grundsätzlich das BS am besten weiss, was mit dem Speicher anzufangen ist; insofern gilt das auch für jedes andere BS, das überhaupt eine Speicherverwaltung hat. Am besten anstatt Caching sind Memory Mapped Files zu verwenden - aus Sicht des Programmierers ist alles im Speicher, was aktuell geladen wird, bestimmt das BS. Gruss Reinhard |
Re: Festplattencache planen
naja aber windows weiß ja nicht was ich mit der datei machen möchte.
aber Memory Mapped Files klingt eigentlich ganz interessant. Mal schaun was ich in der suche drüber finde |
Re: Festplattencache planen
Zitat:
![]() FILE_FLAG_WRITE_THROUGH, FILE_FLAG_SEQUENTIAL_SCAN, FILE_FLAG_RANDOM_ACCESS, FILE_FLAG_OVERLAPPED, FILE_FLAG_OPEN_NO_RECALL und FILE_FLAG_NO_BUFFERING. Dabei hat FILE_FLAG_OVERLAPPED nur einen Nebeneffekt in Bezug auf den Cache. |
Re: Festplattencache planen
ah cool
kann ich des mit TFileStream auch verwenden? Des wär mir lieber |
Re: Festplattencache planen
Zitat:
|
Re: Festplattencache planen
Zitat:
geht es nicht z.b. über TFileStream.Create(const AFileName: string; Mode: Word; Rights: Cardinal); |
Re: Festplattencache planen
Zitat:
Zitat:
Delphi-Quellcode:
TFlagFileStream = Class(THandleStream)
Public Constructor Create(const FileName: string; const AMode: word); Destructor Destroy; Override; End; ... constructor TFlagFileStream.Create(const FileName: string; const Mode: word; Flags: Word) var lHandle: THandle; begin if AMode = fmCreate then begin lHandle := CreateFile(PChar(FileName), GENERIC_READ Or GENERIC_WRITE, 0, Nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL or Flags, 0); if lHandle < 0 then raise EFCreateError.CreateResFmt(PResStringRec(@SFCreateError), [FileName]); end else begin lHandle := CreateFile(PChar(FileName), GENERIC_READ Or GENERIC_WRITE, 0, Nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL or Flags, 0); if lHandle < 0 then raise EFOpenError.CreateResFmt(PResStringRec(@SFOpenError), [FileName]); end; inherited Create(lHandle); end; destructor TFlagFileStream.Destroy; begin FileClose(Handle); inherited; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:58 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