日期时间.Ticks没有100 ns的分辨率

本文关键字:ns 分辨率 没有 时间 Ticks 日期 | 更新日期: 2023-09-27 17:53:46

可能重复:
C#日期时间。现在精度

关于中的高分辨率定时,SO上有一些问题。NET中声明(如MSDN文档中所述(DateTime。Ticks的分辨率为100纳秒。

但现实生活中似乎根本不是这样。若我运行下面的代码,我希望它生成行,其中每行的Tick值都不同,其中许多行具有相同的Milisecond值。但事实并非如此——刻度值在毫秒值的下一次偏移之前保持不变,不会增加时间戳的分辨率。

private static List<string> GetTimeLine(long iterations)
{
    List<string> liste = new List<string>();
    for (long i = 0; i <= iterations; i++)
    {
        liste.Add(DateTime.Now.Millisecond.ToString() + " - " + DateTime.Now.Ticks.ToString());
    }
    return liste;
}
static void Main(string[] args)
{
    Console.WriteLine("Generating timeline");
    guids = GetTimeLine(10000);
    File.WriteAllLines(@"C:'Test'GUIDS.TXT", guids);
    Console.WriteLine("File written - Press ENTER");
    Console.ReadLine();
}

结果输出示例:


867-634940160118679615

867-634940160118679615

867-634940160118679615

867-634940160118679615

867-634940160118679615

868-634940160118689616

868-634940160118689616

868-634940160118689616

那么,获得超过毫秒分辨率的方法是什么呢。NET?

日期时间.Ticks没有100 ns的分辨率

在C#中测量运行时间的最准确方法是使用Stopwatch类。

这使用微处理器的性能计数器,通过调用QueryPerformanceCounter来实现。