释放输出比Debug: MD5CryptoServiceProvider.ComputeHash()慢

本文关键字:ComputeHash MD5CryptoServiceProvider 输出 Debug 释放 | 更新日期: 2023-09-27 18:04:20

我通过下面的代码周期性地计算文件的MD5哈希值。文件大小约为10MB。当我在调试模式(Debug | x64)下运行我的程序时,对ComputeHash()的调用需要35ms,如果在发布模式(Release | x64)下构建,则需要400ms -在没有附加调试器的情况下进行测试,对于相同的文件并重新测试多次。

(我尝试了visual studio express 2010和2012 -相同的结果)。

我该怎么做才能在发布模式下获得良好的调试性能?什么好主意吗?提前感谢!

代码:

public static string GetMD5HashFromFile(string fileName)
{
  StringBuilder sb = new StringBuilder();
  if (File.Exists(fileName))
  {
    var stream = File.Open(fileName, FileMode.Open, FileAccess.Read, IO.FileShare.ReadWrite);
    MD5 md5 = MD5.Create();
    //for benchmarking
    var s = Stopwatch.StartNew();
    byte[] retVal = md5.ComputeHash(stream);
    //for benchmarking
    System.Windows.MessageBox.Show(s.ElapsedMilliseconds.ToString());
    stream.Close();
    for (int i = 0; i < retVal.Length; i++)
      sb.Append(retVal[i].ToString("x2"));
  }
  return sb.ToString();
}

释放输出比Debug: MD5CryptoServiceProvider.ComputeHash()慢

您是否通过Visual Studio运行发布版和调试版?如果是这样,请尝试在Visual Studio之外直接运行它们。通过Visual Studio运行它们总是会将调试器附加到进程上,从而导致速度变慢。