我需要做的在Windows .NET程序(C#)一些性能基准测试,但我没有做在Windows世界标杆了。 我已经研究过使用Windows 2000 / XP的性能与此自定义计数器的显示器,但我不认为这是我所需的东西。
是否有良好的系统设施,这在Windows XP,还是我只是需要使用System.Diagnostics.Stopwatch [编辑]和写入文本日志手动解释,还是有别的原因呢?
编辑:有什么超越System.Diagnostics.Stopwatch
?
我需要做的在Windows .NET程序(C#)一些性能基准测试,但我没有做在Windows世界标杆了。 我已经研究过使用Windows 2000 / XP的性能与此自定义计数器的显示器,但我不认为这是我所需的东西。
是否有良好的系统设施,这在Windows XP,还是我只是需要使用System.Diagnostics.Stopwatch [编辑]和写入文本日志手动解释,还是有别的原因呢?
编辑:有什么超越System.Diagnostics.Stopwatch
?
对于微基准我真的很喜欢MeasureIt的(可以从下载http://msdn.microsoft.com/en-us/magazine/cc500596.aspx )。 它是由万斯莫里森写在CLR一个性能架构师一个测试项目。 目前,它有许多的.Net / CLR核心方法的好一套基准。 它的最好的部分是,它是微不足道的调整和增加新的基准不管你想测试。 只需运行“MeasureIt的/编辑”,它会启动VS与项目本身,以便您可以查看如何将这些基准写入并以类似的方式添加新的,如果你喜欢。
正如已经指出秒表可能是最简单的方式和MeasureIt的使用秒表下其时序但它也确实喜欢运行的代码X次块,然后为您提供统计信息的运行并没有什么其他一些东西。
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");
如果你只想要一些快速的数字,你可以使用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
有相当多的分析器在那里。 这里有一些我所知道的那些的:
如果你继续使用System.Diagnostics.Stopwatch,你就能仪器,测量你的代码,你明确提出开始只有特定的点/停止左右。 这是衡量特定的片段,比如一个紧密的循环或类似的东西不够好,但它不会给你的你的程序花费其大部分时间的完整画面。
这可能不是你想要的,但dotTrace提供了许多有用的诊断信息,并集成到Visual Studio。
如果你的项目是相当大的,有很多的模块做呼叫的大数目,您可以: http://www.moduleanalyzer.com/