【发布时间】:2017-05-23 12:52:44
【问题描述】:
我正在编写一个控制台应用程序,它遍历二叉树并根据 md5 校验和搜索新的或更改的文件。 整个过程很快(大约 70.000 个文件需要 14 秒),但生成校验和大约需要 5 分钟,这太慢了......
对改进这个过程有什么建议吗?我的哈希函数如下:
private string getMD5(string filename)
{
using (var md5 = new MD5CryptoServiceProvider())
{
if (File.Exists(@filename))
{
try
{
var buffer = md5.ComputeHash(File.ReadAllBytes(filename));
var sb = new StringBuilder();
for (var i = 0; i < buffer.Length; i++)
{
sb.Append(buffer[i].ToString("x2"));
}
return sb.ToString();
}
catch (Exception)
{
Program.logger.log("Error while creating checksum!", Program.logger.LOG_ERROR);
return "";
}
}
else
{
return "";
}
}
}
【问题讨论】:
-
您可以使用
ComputeHash(Stream)重载并传递文件流,而不是将文件内容读入内存。 -
@Lee 让我的代码运行得更慢了.. 但感谢您的意图