测量时钟周期C#

本文关键字:时钟周期 测量 | 更新日期: 2023-09-27 18:20:17

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

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

我的问题是这些滴答声到底和什么有关,也就是这些时钟周期。我知道我可以从Stopwatch.Frequency中得到频率,但这实际上和时钟周期一样吗。也就是说,553534的刻度计数对应于同样多的CPU周期。

测量时钟周期C#

从文档

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

频率:

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

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

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

这取决于系统的功能。

IsHighResolution字段可以告诉您Stopwatch类告诉时间。如果它是true,那么它使用性能计数器,并且节拍可能是时钟周期。它们实际代表的内容取决于硬件。