Gute Frage.
Ungepufferte E / A ist eine einfache Dateikopie von einem Quellspeicherort zu einem Zielspeicherort. Gepufferte E / A erweitern die einfache Kopie, um sie für zukünftige Lesevorgänge (und Schreibvorgänge) derselben Datei zu optimieren, indem die Datei in den Dateisystem-Cache kopiert wird , der eine Region des virtuellen Speichers darstellt. Bei gepufferten E / A-Vorgängen tritt beim ersten Zugriff auf die Datei eine Leistungseinbuße auf, da die Datei in den Speicher kopiert werden muss. Da der Speicherzugriff jedoch schneller als der Festplattenzugriff ist, sollte der nachfolgende Dateizugriff schneller sein. Das Betriebssystem sorgt für die Synchronisierung von Dateischreibvorgängen auf die Festplatte, und Lesevorgänge können direkt aus dem Speicher abgerufen werden.
Der Verwendungshinweis erwähnt große Dateien gegenüber gepufferten E / A, weil:
- Die Vorlaufkosten sind teuer. Der Leistungsverlust bei gepufferten E / A ist bei großen Dateien wesentlich schlechter.
- Sie bekommen wenig dafür. Große Dateiblöcke bleiben ohnehin nicht lange im Cache, es sei denn, Sie haben im Verhältnis zur Dateigröße eine Menge Speicher.
- Festplatten-E / A werden möglicherweise nicht vermieden. Das Lesen und Schreiben großer Dateidatenblöcke erhöht die Wahrscheinlichkeit, dass Festplatten-E / A erforderlich sind.
- Sie müssen wahrscheinlich sowieso nicht puffern. Auf große Dateien wird in der Praxis seltener zugegriffen als auf kleinere Dateien.
Es gibt also einen Kompromiss, aber welcher für Sie angemessen ist, hängt von Ihrem speziellen Fall ab. Wenn Sie eine Reihe von Dateien komprimieren und die ZIP-Datei an ein Sicherungsziel übertragen, ist ungepuffert der richtige Weg. Eine Reihe von Dateien kopieren, die gerade geändert wurden? Gepuffert sollte schneller sein.
Beachten Sie schließlich, dass die Dateigröße nicht der einzige Faktor bei der Entscheidung zwischen gepuffert und ungepuffert ist. Wie bei jedem Cache ist der Dateisystem-Cache schneller, aber kleiner als die Quelle dahinter. Es erfordert eine Cache-Ersetzungsstrategie, die regelt, wann Elemente entfernt werden müssen, um Platz für neue Elemente zu schaffen. Es verliert seinen Vorteil, wenn häufig aufgerufene Gegenstände entfernt werden. Wenn Sie beispielsweise Benutzer-Home-Verzeichnisse im Tagesverlauf an einen separaten Speicherort synchronisieren (dh während Benutzer die Dateien aktiv verwenden), profitieren gepufferte E / A von Dateien, die sich bereits im Cache befinden, können den Cache jedoch vorübergehend mit veralteten Dateien verschmutzen ;; Auf der anderen Seite würde ungepuffert auf den Vorteil bereits zwischengespeicherter Dateien verzichten. Kein klarer Gewinner in einem solchen Fall.
Hinweis: Dies gilt auch für xcopy /J
Weitere Informationen finden Sie im Microsoft Ask The Performance Team-Blog .