我需要在.NET应用程序中访问非常精确的计时。
我需要微秒精度。
在.NET中有一种简单的方法吗?
答案 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)
秒表课程是您的最佳选择,因为它的准确性:
http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.aspx
示例:
https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-6167361.html
答案 4 :(得分:1)
答案 5 :(得分:0)
我找到了一种方法,它比StopWatch,PerformanceCounters和我遇到的所有其他实现更精确地工作,并且不需要平台调用或其他。
如果您发现其他情况,请告诉我!