高性能计时器 vs 计时器StopWatch

39

4
这段内容翻译为:“它的日期是2002年,当时.NET 1.1还存在。”加1。 - nawfal
3个回答

43

22

就高分辨率计时而言,它们是相同的。

两者都使用以下内容:

[DllImport("Kernel32.dll")]
private static extern bool QueryPerformanceCounter(out long PerformanceCount);

还有这个:

[DllImport("Kernel32.dll")]
private static extern bool QueryPerformanceFrequency(out long Frequency);

要进行底层定时操作。(您可以使用Reflector.NET验证此操作)。我会使用StopWatch,因为它已经是框架的一部分了(无需链接另一个dll),并且它比HiPerfTimer具有更好的功能。


6
是的- 但是StopWatch更优秀,因为它有备用选项。如果高性能计数器不受支持,HiPerfTimer会抛出Win32Exception异常。 - RichardOD
1
是的,我最终放弃了HiPerfTimer。CodeProject上的文章有点薄弱(但想法很好)。我还推荐了StopWatch,它更加健壮,并且在QueryPerformanceFrequency失败时具有默认值,这与Shay提到的IsHighResolution相关。 - ParmesanCodice

7

StopWatch- 它可以在不支持高分辨率性能计数器的系统上工作,您无需使用任何外部库即可使用它。

另一个会在没有高分辨率计数器支持时抛出Win32Exception异常。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接