Unter Windows 7 (64 Bit) lese ich 9000 mittelgroße Dateien durch. Insgesamt gibt es mehr als 200 MB Daten. Mit Java (JDK 1.6.21) gehe ich die Dateien durch. Die ersten 1400 oder so laufen mit voller Geschwindigkeit, aber dann sinkt die Geschwindigkeit auf 4 ms pro Datei. Es stellt sich heraus, dass die Hauptkosten nur durch das Öffnen der Dateien anfallen.
Ich öffne die Dateien mit new FileInputStream
(und schließe sie natürlich rechtzeitig, um Dateiverluste zu vermeiden). Nach einigen Nachforschungen stelle ich fest, dass der Windows-Festplattencache nur etwa 100 MB RAM belegt, obwohl mir 8 GB zur Verfügung stehen. Ich habe versucht, die Cachegröße mit dem CacheSet- Tool zu erhöhen , aber alle von mir angegebenen Werte liegen außerhalb des zulässigen Bereichs .
Ich habe auch versucht, den LargeSystemCache
Registrierungsschlüssel zu aktivieren, aber (nach dem Neustart) zeigt das CacheSet
Tool weiterhin an, dass ich 100 MB Cache verwende (und während des Testlaufs nicht zunimmt). Hat jemand Vorschläge, um Windows 7 zum Zwischenspeichern meiner 9000-Dateien zu "ermutigen"?
quelle
Antworten:
Superfetch speichert nicht alle großen Dateien im Cache, sondern nur die Teile, auf die zugegriffen wird. Um auf diese Datei zuzugreifen, muss die Festplatte noch gelesen werden. Ein Festplatten-Cache von 210 MB wie ich kann alles von all diesen kleinen Dateien in Windows zwischenspeichern. Und die Leistung ist spürbar. Ich bezweifle jedoch, dass es Auswirkungen auf schnellere Systeme haben würde.
quelle
Außerdem habe ich festgestellt, dass CacheSet Probleme mit großen Werten hat, möglicherweise, weil es sich um eine 32-Bit-Anwendung aus dem Jahr 2006 handelt. Ich habe ein 64-Bit-Programm um dieselbe API geschrieben, mit dem Cachegrößen über 4 GB festgelegt werden können: http: / /blog.thecybershadow.net/2012/12/14/64-bit-cacheset/
Hinweis: Im CacheSet-Artikel wird CacheMan erwähnt. Die neueste Version verwendet jedoch anscheinend dieselbe API wie CacheSet. Sie ist lediglich in eine Benutzeroberfläche mit einer Reihe von Voreinstellungen und anderen Funktionen gepackt.
quelle
Ich weiß, dass dies alt ist, aber für andere, die auf dieses Problem stoßen : Sie müssen CacheSet manuell mit Administratorrechten ausführen. Wenn Sie dies nicht tun, wird der Fehler OutOfRange angezeigt. Es fragt NICHT automatisch nach Berechtigungen.
quelle