DateTime.Ticks没有100 ns的分辨率?
可能重复:
C#DateTime.Now精度
关于.NET中的高分辨率计时有几个问题,其中声明(如MSDN文档中)DateTime.Ticks的结果为100纳秒。
但在现实生活中似乎并非如此。 如果我运行下面的代码,我希望它生成行,其中每个行的Tick值不同,其中很多行具有相同的Milisecond值。 但事实并非如此 – 滴答值保持不变,直到下一个移位为毫秒值,不会增加时间戳的分辨率。
private static List GetTimeLine(long iterations) { List liste = new List(); 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 – 634940160118679615867 – 634940160118679615
867 – 634940160118679615
867 – 634940160118679615
867 – 634940160118679615
868 – 634940160118689616
868 – 634940160118689616
868 – 634940160118689616
…
那么在.NET中获得超过毫秒分辨率的方法是什么?
在C#中测量经过时间的最准确方法是使用秒表类。
这使用微处理器的性能计数器,通过调用QueryPerformanceCounter实现 。