2014-09-02 89 views
-2

我使用C#秒表功能,用努力基准一系列算法:测量时钟周期C#

var timer = Stopwatch.StartNew(); 
// Do something 
timer.Stop(); 
var elapsed2 = timer.ElapsedTicks; 
Console.WriteLine(elapsed2); 

我的问题是什么,这些蜱实际上涉及到。即是这些时钟周期。我知道我可以从Stopwatch.Frequency得到频率,但是这实际上与时钟周期相同。即滴答计数553534对应于多个CPU周期。

+5

您知道,[文档](http://msdn.microsoft.com/zh-cn/library/system.diagnostics.stopwatch.elapsedticks.aspx)回答了很多问题。 – Rawling 2014-09-02 14:11:19

+0

是啊文档很好。什么是有趣的...许多问题,并且文件中的答案通常被标记为NOTE。 – Reniuz 2014-09-02 14:14:46

+0

无论如何,时钟周期不会有多大意义。多级存储器高速缓存,流水线执行,中断......都是精确测量CPU周期的一个挑战。 – HABO 2014-09-02 14:16:36

回答

3

docs


秒表滴答来自DateTime.Ticks不同。 DateTime.Ticks值中的每个记号表示一个100纳秒的间隔。 ElapsedTicks值中的每个刻度表示等于1秒的时间间隔除以Frequency

频率:

定时器频率指示出该计时器的精度和分辨率。例如,每秒2百万个计时器的计时器频率等于每个计时器500纳秒的计时器分辨率。换句话说,因为一秒等于10亿纳秒,每秒200万个计时器的计时器频率相当于每十亿纳秒200万个计时器,可以进一步简化为每500纳秒1个计时器。

频率值取决于底层定时机制的分辨率。如果安装的硬件和操作系统支持高分辨率性能计数器,则频率值反映该计数器的频率。否则,频率值基于系统定时器频率。

由于秒表频率取决于安装的硬件和操作系统,因此频率值在系统运行时保持不变。

2

这取决于系统的功能。

IsHighResolution field可以告诉你Stopwatch课程如何告诉时间。如果它是true,那么它使用性能计数器,并且可能是时钟周期。他们实际上代表的是依赖于硬件。