Berechnen MD5-Prüfsumme Effizientes
Frage
Ich verwende folgenden Code, um die Prüfsumme einer Datei zu erhalten. Es nutzt 50% des CPU bei der Berechnung.
MessageDigest md = MessageDigest.getInstance("MD5");
InputStream is = new FileInputStream("C:\\Temp\\Small\\Movie.mp4"); // Size 700 MB
byte [] buffer = new byte [blockSize];
int numRead;
do
{
numRead = is.read(buffer);
if (numRead > 0)
{
md.update(buffer, 0, numRead);
}
} while (numRead != -1);
byte[] digest = md.digest();
Was kann getan werden, um den Code zu reduzieren verwenden maximale CPU andere als Thread.sleep (ms)
Grüße, Kingsley Reuben J
Lösung
Sie könnten die "Fast MD5" Implementierung , die eine deutliche Leistungssteigerung (26% schneller im Durchschnitt) über Java-Standard java.security.MessageDigest
Implementierung bietet. Siehe die Seite des Autors für detaillierte Informationen, einschließlich Codebeispiele und Benchmarks . Der Code ist unter der GNU LGPL 2.1 Lizenz .
Andere Tipps
Ich würde eher dedicate Priorität Management os, für Fenster können Sie Ihre App mit
startenstart /low your_executable
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow