私が開発しているAndroidアプリでは、CRC32、MD5、またはSHA1を介してファイルを認識できます(これらのリストを含むxmlファイルがあります)。
CRC32 の方が計算が速いと読んだので、これを使用することにしましたが、4MB のファイルの CRC32 を計算するには約 3 分かかります。これは、デュアル 1.5 GHz CPU と 1 GB RAM を搭載したデバイスにとって通常の時間ですか? そうでない場合、ヒープの制限が原因でしょうか? シェルを介して CRC を計算するためにネイティブ C をコンパイルすると改善され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();