2009-03-13 10 views

Antwort

2

Sie benötigen komplexeren Code zum Einrichten der Dateizuordnung als zum einfachen Öffnen und Lesen. Die Dateizuordnung ist für den wahlfreien Zugriff auf einen Dateiabschnitt gedacht. Wenn Sie das nicht brauchen, kümmern Sie sich nicht um die Dateizuordnung.

Auch wenn Sie Ihren Code auf eine andere Plattform portieren müssen, werden Sie es viel einfacher und schneller machen, wenn Sie keine Dateizuordnung verwenden.

13

Mit ReadFile/WriteFile haben Sie deterministische Fehlerbehandlung Semantik. Wenn Sie Speicherabbilddateien verwenden, werden Fehler zurückgegeben, indem eine Ausnahme ausgelöst wird.

Darüber hinaus, wenn die Speicherabbilddatei die Festplatte (oder noch schlimmer, das Netzwerk) treffen muss, kann das Lesen des Speichers einige Sekunden (oder sogar Minuten) dauern. Abhängig von Ihrer Anwendung kann dies zu unerwarteten Störungen führen.

Wenn Sie ReadFile/WriteFile verwenden, können Sie asynchrone Varianten der API verwenden, um dieses Verhalten zu steuern.

Sie haben auch mehr deterministische Leistung, wenn Sie ReadFile verwenden, insbesondere wenn Ihr E/A-Muster vorhersehbar ist - speicherorientierte E/A ist oft zufällig, während ReadFile fast immer seriell ist (da ReadFile an der aktuellen Dateiposition liest und rückt die aktuelle Dateiposition vor).

2

Ein großer Vorteil der Dateizuordnung ist, dass sie den Systemcache nicht beeinflusst. Wenn Ihre Anwendung über ReadFile exzessive I/O-Vorgänge ausführt, wird Ihr Systemcache größer und verbraucht mehr und mehr physischen Speicher. Wenn Ihr Betriebssystem 32 Bit hat und Sie viel mehr als 1 GB Speicher haben, dann haben Sie Glück, denn auf 32 Bit Windows ist die Größe des Systemcaches auf 1 GB begrenzt. Andernfalls verbraucht der System-Cache den gesamten verfügbaren physischen Speicher, und der Speichermanager beginnt bald damit, die Seiten anderer Prozesse auf die Festplatte zu löschen, wodurch die Festplattenvorgänge intensiviert werden, anstatt sie tatsächlich zu verringern. Der Effekt ist besonders auf 64-Bit-Windows spürbar, wo die Cache-Größe nur durch den verfügbaren physischen Speicher begrenzt ist. Das Datei-Mapping führt andererseits nicht zu einem Überladen des System-Caches und verschlechtert gleichzeitig nicht die Leistung.

Verwandte Themen