【发布时间】:2013-01-17 10:09:58
【问题描述】:
关于 .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 - 634940160118679615867 - 634940160118679615
867 - 634940160118679615
867 - 634940160118679615
867 - 634940160118679615
868 - 634940160118689616
868 - 634940160118689616
868 - 634940160118689616
...
那么在.NET中获得超过毫秒分辨率的方法是什么?
【问题讨论】:
-
Precision and accuracy of DateTime "如果您要问的问题是某个操作花费了多长时间,并且您想要一个高精度、高精度的答案,那么请使用 StopWatch 类。它确实具有接近其精度的纳秒级精度和准确度。”
-
这不是
DateTime.Ticks的分辨率问题,而是DateTime.Now的精度问题,关于这个问题的答案,请参阅C# DateTime.Now precision(我想这导致了那篇博文)。 -
您的所有问题都在这篇非常好的文章中得到解答:blogs.msdn.com/b/ericlippert/archive/2010/04/08/…
-
啊,太好了,您将链接添加回来(当我写该评论时,它似乎丢失了)。
标签: c# .net visual-studio-2012