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

War es hilfreich?

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

starten
start /low your_executable
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top