Große Dateien in Arbeitsspeicher laden
-
Hallo,
um mein Programm performanter zu machen, würde ich gerne eine große Datei (100MB) in den Arbeitsspeicher zu laden um darauf Suchanfragen machen zu können. Ich öffne die Datei mit der Klasse CFile. Ist dies überhaupt möglich? Ab einer 5MB Datei kann ich bereits nichtmehr mit
CFile theFile(pDoc->GetPathName(),CFile::modeRead|CFile::typeBinary);
theFile.Seek(0,CFile::begin);
theFile.Read(nCompleteArray,theFile.GetLength());
arbeiten, ohne dass das Programm eine Fehlermeldung zur Laufzeit gibt.
Danke
-
Du solltest es dann mal mit File Mapping probieren.
Link: http://msdn2.microsoft.com/en-us/library/aa366556(VS.85).aspx
-
HaJo: Zu deiner Anfrage in Forentechnik: Der Link funktioniert auch ohne das (VS.85).aspx
-
Ich würde auch ein Filemapping in den Speicher durchführen. Bis zu einer bestimmten Größe ist das OK, abhäängig eben vom zur Verfügung stehenden Speicher.
Was bekommst Du denn für einen Fehler?
Das einlesen der Datei in den Speicher in so großen Blöclen ist nicht effektiver, als wenn Du 64kb Blöcke verwendest. Durch das intelligente Readahead Caching sollte das OS Dich unterstützen.