我需要做一些性能标准。净节目(C#)在窗户,但是我没有做过标杆多的Windows的世界。我已经看到使用Windows2000/XP绩效监测与定义计数器,为此,但我不认为这是相当什么我想要的。

是否有任何良好的系统设施,在Windows XP,或者我只是需要使用的系统。诊断。秒表[编辑]写文字记录为手册的解释,或者是还有别的东西吗?

编辑:是否有任何东西超越 System.Diagnostics.Stopwatch?

有帮助吗?

解决方案

对于微基准测试,我非常喜欢MeasureIt(可以从 http: //msdn.microsoft.com/en-us/magazine/cc500596.aspx )。这是由CLR的性能架构师Vance Morrison编写的测试项目。它目前为许多.Net / CLR核心方法提供了一套很好的基准。最好的部分是,无论你想测试什么,调整和添加新基准都是微不足道的。只需运行“MeasureIt / edit”即可。它会自动启动VS项目,以便您可以查看这些基准测试的编写方式,并以类似的方式添加新的基准测试。

正如已经说过的,StopWatch可能是最简单的方法,MeasureIt使用下面的StopWatch作为其时间,但它也做了一些其他的事情,比如运行一段代码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来计算整体执行时间。使用measure-command 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

有相当多的分析仪。这里有一些我知道的:

如果你继续使用的系统。诊断。秒表,你将能够仪器和测量只有特定的点你的代码,其中,你明确地把启动/停止的周围。这个足够好的测量具体,就像一个紧循环或类似的事情,但它不会给你一个完整的画面在那里你的程序,花费大量的时间。

这可能不是您想要的,但 dotTrace 提供了许多有用的诊断功能,并且已集成到Visual Studio。

如果你的项目很大并且有很多模块在进行大量的通话,你可以: http://www.moduleanalyzer.com/

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top