Meistens besteht der Engpass nicht darin, die Datei von der Festplatte in den Arbeitsspeicher zu bringen, sondern vom Arbeitsspeicher in das Netzwerk. Sofern das System nicht sehr aktiv ist oder wenig RAM hat, sollte Windows das Zwischenspeichern von Dateien ziemlich intelligent handhaben.
Möglicherweise möchten Sie einige Tests durchführen und feststellen, ob es tatsächlich einen Engpass in Ihrem System gibt, der eine deutliche Verbesserung bewirken würde, indem bestimmte Dateien im Speicher bleiben und nicht auf die Festplatte übertragen werden, wenn Windows der Ansicht ist, dass sie auf der Festplatte gespeichert werden sollten. Ich wette, Sie sparen sehr wenig Zeit, da der Engpass höchstwahrscheinlich das Netzwerk ist. Wenn die Datei in die Warteschlange gestellt wird, um zum Netzwerk zu gelangen, füllt das Laufwerk bereits Puffer im Speicher, während es die Datei aus dem Netzwerk zieht Fahrt.
Die einzige wirklich zuverlässige Möglichkeit, Datendateien im Speicher zu speichern, die ich kenne, besteht darin, eine RAM-Disk zu erstellen und die Dateien dort zu kopieren, vorausgesetzt, sie sind statisch. Andernfalls haben Sie einen Stromausfall und sie sind weg.
Andernfalls möchten Sie möglicherweise in viel RAM und Hochgeschwindigkeitslaufwerke investieren. Möglicherweise sogar eine gespiegelte RAID-Konfiguration, da diese eine hohe Leseleistung (langsameres Schreiben) aufweist. Ich würde Windows und den Speichermanager das tun lassen und mich darauf konzentrieren, die Zugriffszeit mit besseren Subsystemen (schnelle Festplatte, RAID, viel Speicher, hohe Geschwindigkeit und hochwertige Netzwerkkarte) zu minimieren, anstatt sie bis zum Debuggen oder zur Fehlerbehebung zu optimieren könnte später ein Schmerz werden.
TransmitFile
Funktion zu verwenden . Durch Öffnen einer Datei undFILE_FLAG_SEQUENTIAL_SCAN
anschließendesTransmitFile
Senden der Dateidaten über den Socket ruft Windows aggressiv vorab ab, um Verzögerungen zu minimieren, und führt die Socket-Schreibvorgänge direkt aus dem Systemcache aus, wodurch unnötige Systemaufrufe zum Kopieren in und aus dem Benutzerbereich entfernt werden.