如何在C#中进行性能测试?
目前我所知道的方法是使用:
Stopwatch sw = new Stopwatch();
sw.Start();
{
//code to test
}
sw.Stop();
有没有其他方法可以做到这一点,或者上述方法是错误的?
如何在C#中进行性能测试?
目前我所知道的方法是使用:
Stopwatch sw = new Stopwatch();
sw.Start();
{
//code to test
}
sw.Stop();
Stopwatch
是一种很好的、简单的方式来测量特定代码块的执行时间。对于大规模性能测试,有很多好的工具可用,比如在以下SO问题中列出的工具:
Stopwatch
或其他低级工具),则需要注意以下几点:
public class Md5VsSha256
{
[Benchmark]
public byte[] Sha256() => sha256.ComputeHash(data);
[Benchmark]
public byte[] Md5() => md5.ComputeHash(data);
}
基准测试结果
方法 | 平均值 | 误差 | 标准偏差 |
---|---|---|---|
Sha256 | 100.90 微秒 | 0.5070 微秒 | 0.4494 微秒 |
Md5 | 37.66 微秒 | 0.1290 微秒 | 0.1207 微秒 |
基本上,您可以从System.Diagnostics命名空间中的所有内容中受益。例如PerformanceCounter
类等。 Stopwatch
是您可以用来测量执行时间的替代方案之一。
如果您有一些钱可以花费,您可以使用RedGate Develper Bundle for .NET。它具有性能分析器、内存分析器等功能。
还有其他更便宜的替代方案。