测量时钟周期C#

时间:2014-09-02 14:08:49

标签: c#

我正在尝试使用C#StopWatch函数对一系列算法进行基准测试,使用:

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

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

2 个答案:

答案 0 :(得分:4)

来自docs

  

请注意
  秒表刻度与DateTime.Ticks不同。 DateTime.Ticks值中的每个刻度表示一个100纳秒的间隔。 ElapsedTicks值中的每个刻度表示等于1秒的时间间隔除以Frequency

频率:

  

定时器频率表示定时器精度和分辨率。例如,每秒200万个滴答的定时器频率等于每个滴答500纳秒的定时器分辨率。换句话说,因为一秒钟等于10亿纳秒,每秒200万个滴答的定时器频率相当于每10亿纳秒200万个滴答,可以进一步简化为每500纳秒1个滴答。

     

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

     

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

答案 1 :(得分:3)

这取决于系统的功能。

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