我想计算文件的 MD5 哈希。
如果我将 fast_md5 与本机库http://twmacinta.com/myjava/fast_md5.php一起使用,则 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/s 的速度从 HDD 读取文件,计算时间为 210 秒。
是否可以在 QT 中加速 MD5 Calc 的处理?可能需要将缓冲区从 1000000 增加到更大的值?