Calculer MD5 checksum Efficacement
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
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