精确的.NET时间

时间:2009-10-13 20:57:59

标签: .net vb.net time timing

我需要在.NET应用程序中访问非常精确的计时。

我需要微秒精度。

在.NET中有一种简单的方法吗?

6 个答案:

答案 0 :(得分:6)

System.Diagnostics.Stopwatch是您的计时中这种粒度的正确类,但请确保使用Stopwatch对象的Elapsed.Ticks属性而不是其ElapsedTicks属性,因为它们是两个不同的的东西。

  
      
  • ElapsedTicks(没有点)是指秒表的刻度数,因此需要与Stopwatch.Frequency(在所有机器上都不一样)一起使用来计算经过的时间。
  •   
  • Elapsed.Ticks(带有点的)给出了Timespan个刻度的数量,并且不依赖于秒表频率。
  •   

这可能是.Net中最细微的潜在错误之一。

另外,请注意秒表 非常精细,但不一定准确(取决于您对术语的定义)。秒表返回的经过时间往往会偏离系统时间。

  

在我的笔记本电脑上,秒表在24小时内提前运行约5秒,而其他一些机器的效果更差。

如果你的时间很短,当然,这种效果根本不重要。

答案 1 :(得分:4)

Stopwatch级是您可以获得的最佳精度,它使用高频计时器 秒表的频率取决于CPU的频率,但通常在每秒数百万次的范围内。

如果CPU没有提供高频定时器,那么该类将回退到系统定时器,该定时器的范围是每秒100-50次。

答案 2 :(得分:3)

使用Stopwatch类,应该这样做。

答案 3 :(得分:2)

答案 4 :(得分:1)

答案 5 :(得分:0)

我找到了一种方法,它比StopWatch,PerformanceCounters和我遇到的所有其他实现更精确地工作,并且不需要平台调用或其他。

请参阅https://stackoverflow.com/questions/15725711/obtaining-microsecond-precision-using-net-without-platform-invoke

如果您发现其他情况,请告诉我!