В приложении для Android, которое я разрабатываю, я могу распознать файл через его CRC32, MD5 или SHA1 (у меня есть xml-файл со списком из них).Расчет CRC занимает слишком много времени
Я читал, что CRC32 быстрее вычисляется, поэтому я решил использовать этот, но для вычисления CRC32 файла размером 4 МБ требуется около 3 минут, и мне нужно сделать это на более и более больших файлах в более короткое время. Это обычное время для устройства с двойным процессором 1,5 ГГц и 1 ГБ оперативной памяти? Если нет, это может быть из-за ограничений кучи? Улучшится, если я скомпилирую собственный C для вычисления CRC через оболочку с Process.exec
?
EDIT код: Я добавил BufferedInputStream, и теперь это занимает около 7 секунд. Но 1 минуту для 35 МБ файла.
InputStream fi = new BufferedInputStream(new FileInputStream(f));
int gByte = 0;
CRC32 gCRC = new CRC32();
while ((gByte = fi.read()) != -1) {
gCRC.update(gByte);
}
fi.close();
Может быть, IO слишком медленный – BlackJoker
Пожалуйста, добавьте свой код контрольной суммы, так как это может привести к неправильному использованию API криптографии ... – Kartoch
Как вы caculate crc32? – BlackJoker