Я использую следующий код для получения контрольной суммы файла. Во время расчетов он использует 50% процессора.Вычислить контрольную сумму MD5 эффективно
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();
Что можно сделать, чтобы уменьшить код с использования максимальной загрузки процессора, кроме Thread.sleep (мс)
пожеланий, Кингл Рувим J
50% на одном или двухъядерном процессоре? :) я предполагаю ИТС на двухъядерном. – Quamis
@Quamis Итак, ответ заключается в том, чтобы получить больше ядер. –
Я комментирую ваш вопрос, раздел ответов находится на странице. Я пытаюсь понять, что вы, возможно, разместили неверные данные. Кажется, ваш алгоритм вычисляет md5sum файла. Это очень интенсивная задача CPU + disk. Поэтому я предполагаю, что ваш процессор должен быть на 100%. Вы сказали, что 50%, что заставляет меня думать, что у вас есть двухъядерная система, и фактическое использование процессора (core) в этом случае будет 100% – Quamis