Ich versuche, die Leistung eines Windows-Programms zu vergleichen, wenn der Disk-Cache in seinem besten Zustand ist (wenn alle Dateien für das Programm ausgeführt werden, sind im Cache, ich führe es einfach mehrmals Holen Sie diesen Zustand), und wenn der Cache in seinem schlechtesten Zustand ist, ist das vollständig leer.Invalidate OS Disk Read Cache
Der einzige Weg, wie ich sicherstellen kann, dass der Cache vollständig leer ist, ist durch einen Neustart des Computers, aber das ist nicht ideal, da es zu viel Zeit in Anspruch nimmt. Gibt es eine Möglichkeit, dies ohne Neustart zu tun? Ich habe versucht, Sync, aber es nicht ungültig den Lese-Cache ...
CreateFile mit diesem Flags scheint gut zu funktionieren, aber ich suche nach einer Möglichkeit, es für einen gesamten Ordner (und Unterordner) zu tun. Ich hoffe wirklich, dass ich nicht jede Datei durchlaufen sollte, da ich über einige Millionen Dateien in dem Ordner nachdenke, die ich für ungültig erklären muss. Über das Schreiben eines Dienstprogramms, das eine große Datei liest, wie kann ich garantieren, dass der Cache geleert wird? Vielleicht verwaltet Windows seinen Cache so, dass die gesamte Datei nicht zwischengespeichert wird und Platz für weitere Dateien bleibt. Oder vielleicht nicht ... eigentlich habe ich keine Ahnung. Wie auch immer, ich werde es versuchen und die Ergebnisse sehen. –
Wenn Sie eine große Anzahl von Dateien durchlaufen, haben Sie nicht nur eine kleine Anzahl von CreateFile-Aufrufen, um dieses Flag hinzuzufügen? Es ist ein Teil des Öffnens der Datei zum Lesen, nicht ein zweistufiger Prozess, in dem Sie den Cache (für diese Datei) ungültig machen und dann öffnen. –