3

我正在通过下面的代码定期计算文件的 MD5 哈希值。这些文件大约为 10MB。当我在调试模式 (Debug | x64) 下运行我的程序时,对 ComputeHash() 的调用需要 35 毫秒,如果在发布模式 (Release | x64) 中构建,则需要 400 毫秒 - 两者都在没有附加调试器的情况下针对同一个文件进行了测试并重新测试多时。

(我尝试使用 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();
}
4

1 回答 1

0

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

于 2013-05-20T01:26:20.460 回答