Frage

  1. Create und MapViewOfFile, und dann tun wir I / O mit einer Funktion wie memcpy.
  2. Verwenden Sie einfach Read / Writefile.

Ist der erste schneller als die zweite? Ich verstehe das nicht.

Warum ist es schneller?
Wenn wir einen Abschnitt Objekt verwenden, dann können wir mehr Cache profitiert von VMM oder Cache Manager?

erhalten
War es hilfreich?

Lösung

Datei-Speicherzuordnung ist schneller, wenn sie Seite auftritt, wie die Datei selbst verwendet als Speicher Paging.

Wenn der Speicher im Dateispeicher abgebildet wird nicht verändert es keine Notwendigkeit gibt, die die Seite in die Auslagerungsdatei, da die Daten in der Datei bereits und Fenster können spülen nachgelesen die Seite von der Platte. .EXE und DLL-Dateien werden über diesen Mechanismus geladen und somit ihre eigene Seite Lagerung.

Wenn der Speicher in der Speicherabbilddatei geschrieben wird, dann ist Seite das gleiche wie wenn die Auslagerungsdatei verwendet worden ist. möglicherweise schneller als die gleiche Stelle auf der Festplatte verwendet wird (je nach NTFS Optimierungen).

Die einfache APIs verbrauchen Seite Dateispeicher gesichert, den Inhalt der Datei, während im Speicher zu halten.

Auf etwas andere Perspektive beiden APIs als Memory-Mapped-Dateien optimiert werden, kann tatsächlich die Read / Write-Datei-APIs unter der Haube verwendet werden, so dass Sie eine Mikro-Optimierung erhalten, wie Sie eine niedrigere Abstraktions

verwenden

Beide Mechanismen werden die VMM / Cache-Manager verwenden.

Andere Tipps

Die Verwendung von Readfile / Writefile beinhaltet mehrere zusätzlichen Speicherblock-Operationen kopieren, so dass es langsamer sein, als die Verwendung von MMFs. Eine andere Frage ist, wie viel langsamer wird es sein - das ist, was man sich messen müssen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top