什么是在Windows基准程序的最佳方式?(What's the best way to b

2019-07-18 16:03发布

我需要做的在Windows .NET程序(C#)一些性能基准测试,但我没有做在Windows世界标杆了。 我已经研究过使用Windows 2000 / XP的性能与此自定义计数器的显示器,但我不认为这是我所需的东西。

是否有良好的系统设施,这在Windows XP,还是我只是需要使用System.Diagnostics.Stopwatch [编辑]和写入文本日志手动解释,还是有别的原因呢?

编辑:有什么超越System.Diagnostics.Stopwatch

Answer 1:

对于微基准我真的很喜欢MeasureIt的(可以从下载http://msdn.microsoft.com/en-us/magazine/cc500596.aspx )。 它是由万斯莫里森写在CLR一个性能架构师一个测试项目。 目前,它有许多的.Net / CLR核心方法的好一套基准。 它的最好的部分是,它是微不足道的调整和增加新的基准不管你想测试。 只需运行“MeasureIt的/编辑”,它会启动VS与项目本身,以便您可以查看如何将这些基准写入并以类似的方式添加新的,如果你喜欢。

正如已经指出秒表可能是最简单的方式和MeasureIt的使用秒表下其时序但它也确实喜欢运行的代码X次块,然后为您提供统计信息的运行并没有什么其他一些东西。



Answer 2:

using System.Diagnostics;
....

Stopwatch sw = new Stopwatch();

sw.Start();

// Code you want to time...

// Note: for averaged accuracy (without other OS effects), 
//       run timed code multiple times in a loop 
//       and then divide by the number of runs.

sw.Stop();

Console.WriteLine("Took " + sw.ElapsedTicks + " Ticks");


Answer 3:

如果你只想要一些快速的数字,你可以使用PowerShell来一次性整体执行。 使用测量命令cmdlet的。 这大致相当于“时间”在Unix中。

> measure-command { your.exe arg1 }

Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 4
Milliseconds      : 996
Ticks             : 49963029
TotalDays         : 5.78275798611111E-05
TotalHours        : 0.00138786191666667
TotalMinutes      : 0.083271715
TotalSeconds      : 4.9963029
TotalMilliseconds : 4996.3029


Answer 4:

有相当多的分析器在那里。 这里有一些我所知道的那些的:

  • 红门蚂蚁
  • Yourkit的.NET探查
  • JetBrains公司dotTrace

如果你继续使用System.Diagnostics.Stopwatch,你就能仪器,测量你的代码,你明确提出开始只有特定的点/停止左右。 这是衡量特定的片段,比如一个紧密的循环或类似的东西不够好,但它不会给你的你的程序花费其大部分时间的完整画面。



Answer 5:

这可能不是你想要的,但dotTrace提供了许多有用的诊断信息,并集成到Visual Studio。



Answer 6:

如果你的项目是相当大的,有很多的模块做呼叫的大数目,您可以: http://www.moduleanalyzer.com/



文章来源: What's the best way to benchmark programs in Windows?