在我正在开发的 Android 应用程序上,我可以通过其 CRC32、MD5 或 SHA1 识别文件(我有包含这些列表的 xml 文件)。
我读到CRC32的计算速度更快,所以我决定使用这个,但是计算一个4MB文件的CRC32大约需要3分钟,我需要在更短的时间内对更多甚至更大的文件进行计算。这是具有双 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();