ファイルの MD5 ハッシュを計算したい。
ネイティブ ライブラリhttp://twmacinta.com/myjava/fast_md5.phpでfast_md5 を使用する場合、Java は HDD からファイルを 90 MB/s...120 MB/s で読み取り、計算時間は 70 秒です。
QTを使えば
QCryptographicHash hash(QCryptographicHash::Md5);
QFile in("C:/file.mkv");
QFileInfo fileInfo("C:/file.mkv");
qint64 imageSize = fileInfo.size();
const int bufferSize = 1000000;
char buf[bufferSize+5];
int bytesRead;
if (in.open(QIODevice::ReadOnly)) {
while ( (bytesRead = in.read(buf, bufferSize)) > 0) {
// imageSize -= bytesRead;
// hash.addData(buf, bytesRead);
}
}
else {
qDebug() << "Failed to open device!";
}
in.close();
qDebug() << hash.result().toHex();
次に、私のプログラムは速度20 ... 78 MB /秒でHDDからファイルを読み取り、計算時間は210秒です。
QT で MD5 Calc の処理を高速化することは可能ですか? バッファを 1000000 からより大きな値に増やす必要がありますか?