高性能定时器与StopWatch

Kan*_*ane 35 .net c# benchmarking timer

有谁知道HiPerfTimerStopWatch类是否更适合基准测试,为什么?

Sha*_*men 37

秒表基于高分辨率计时器(如果可用),您可以使用IsHighResolution检查


Par*_*ice 19

在高分辨率时序方面,它们是相同的.

两者都用这个:

[DllImport("Kernel32.dll")]
private static extern bool QueryPerformanceCounter(out long PerformanceCount);
Run Code Online (Sandbox Code Playgroud)

还有这个:

[DllImport("Kernel32.dll")]
private static extern bool QueryPerformanceFrequency(out long Frequency);
Run Code Online (Sandbox Code Playgroud)

做潜在的时机.(您可以使用Reflector.NET验证这一点).我使用StopWatch因为它已经是框架的一部分(不需要链接另一个dll),它有比HiPerfTimer更好的功能.

  • 是的 - 但是StopWatch实际上是优越的,因为它有一个后备选项.如果不支持高性能计数器,HiPerfTimer将抛出Win32Exception. (6认同)

Ric*_*dOD 6

StopWatch-它也适用于不支持高分辨率性能计数器的系统,并且您不需要任何外部库来使用它.

如果不支持高分辨率计数器,则另一个抛出Win32Exception.