5

可能重复:
C# DateTime.Now 精度

关于 .NET 中的高分辨率计时有几个关于 SO 的问题,其中指出(如 MSDN 文档中所述) DateTime.Ticks 的分辨率为 100 纳秒。

但在现实生活中似乎完全不是这样。如果我运行下面的代码,我希望它生成行,其中每行的 Tick 值都不同,其中很多行具有相同的毫秒值。但它没有 - 刻度值保持不变,直到毫秒值的下一个变化,不会增加时间戳的分辨率。

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中获得超过毫秒分辨率的方法是什么?

4

1 回答 1

5

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

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

于 2013-01-17T10:22:10.417 回答