Question

J'utilise le code ci-dessous pour obtenir le checksum d'un fichier. Il utilise 50% du CPU lors de calculs.

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();

Que peut-on faire pour réduire le code de l'utilisation CPU maximale autre que Thread.sleep (ms)

Cordialement, Kingsley Reuben J

Était-ce utile?

La solution

Vous pouvez utiliser le "MD5 rapide" , qui bénéficie d'une augmentation significative de la performance (26% plus rapide en moyenne) par défaut de mise en œuvre de java.security.MessageDigest de Java. Voir la page de l'auteur pour des informations détaillées, y compris exemples de code et repères. Le code est disponible sous la GNU LGPL 2.1 licence .

Autres conseils

Je préfère Dedicate la gestion de la priorité à l'os, pour Windows, vous pouvez commencer votre application avec

start /low your_executable
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top