Ich versuche, eine Datei in den Speicher zu mappen und dann Zeile für Zeile analysieren - ist istream, was ich verwenden soll?ispersonam vs Speicherzuordnung einer Datei?
Ist itsream das gleiche wie das Mappen einer Datei in den Arbeitsspeicher von Windows? Ich hatte Schwierigkeiten, ein vollständiges Beispiel für das Mappen einer Datei in den Speicher zu finden.
Ich habe Leute gesehen, die Memory Mapping Artikel von msdn verlinken, aber wenn jemand ein kleines (~ 15 Zeilen?) Beispiel empfehlen könnte, wäre ich sehr willkommen.
Ich muss die falsche Sache suchen, aber bei der Suche "C++ Memory Mapping Beispiel" auf Google konnte ich kein Beispiel finden, die durch Iterieren durch.
Dies waren die nächsten Ergebnisse (nur, damit die Menschen erkennen, ich ausgesehen haben): http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2044.html#ClassSharedMemoryObjectExample
http://msdn.microsoft.com/en-us/library/dd997372.aspx (kein C++ Code)
http://beej.us/guide/bgipc/output/html/multipage/mmap.html (wurde für Unix glaube ich, keine Fenster)
"* Ich versuche eine Datei in den Speicher zu mappen und ** dann ** zeilenweise zu analysieren *". Können Sie uns sagen, warum Sie die Datei im Speicher abbilden möchten? Warum ist es nicht ausreichend, Zeile für Zeile zu analysieren (zB 'ifstream' oder' fopen')? –
@Rob, rein aus Leistungsgründen. Ich war unter dem (falschen?) Eindruck, dass es schneller die ganze Datei abbildet? – user997112
@ user997112: Es hängt davon ab, was Sie mit den Daten machen. Wenn Sie es für einen geeigneten Parser verwenden, der Backtracking implementiert, sind Dateien mit Memory-Mapping um ein Vielfaches schneller. Aber wenn Sie nur durch die Daten vorwärts iterieren (wie bei mehreren einfachen 'std :: getline'-Aufrufen), bezweifle ich, dass es einen merklichen Unterschied geben wird. Sicherlich gibt es kein _harm_ bei der Verwendung einer speicherabgebildeten Datei, es sei denn, Sie haben nur wenig Platz im virtuellen Adressraum (wahrscheinlich nur ein Problem in 32-Bit-Code mit GB + Dateigrößen). – ildjarn