我正在編寫一個控制檯應用程序,該應用程序遍歷二叉樹並根據其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
@李,這使我的代碼甚至運行得更慢..但感謝您的意圖 – Tobi