在我正在开发的Android应用程序中,我可以通过其CRC32,MD5或SHA1(我拥有带有这些列表的xml文件)识别文件。CRC计算需要太多时间
,我读了CRC32是要计算的速度更快,所以我决定用这一个,但计算大约需要3分钟4MB的文件CRC32,我需要做的更多,更大的文件时间更短。这是双频1.5GHz CPU和1GB RAM设备的常规时间吗?如果不是,可能是由于堆的限制?如果我编译一个本地C来通过shell来计算CRC,将会提高Process.exec
?
编辑代码: 我添加了一个BufferedInputStream,现在大约需要7秒。但35MB文件1分钟。
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 2013-04-11 13:08:18
请添加您的校验码,因为它可能会导致错误的加密API使用... – Kartoch 2013-04-11 13:08:35
如何计算crc32? – BlackJoker 2013-04-11 13:11:54