猿问

DateTime.Now是衡量函数性能的最佳方法吗?

DateTime.Now是衡量函数性能的最佳方法吗?

我需要找到一个瓶颈,需要尽可能准确地测量时间。

下面的代码片段是衡量性能的最佳方法吗?

DateTime startTime = DateTime.Now;// Some execution processDateTime endTime = DateTime.Now;TimeSpan totalTimeTaken = endTime.Subtract(startTime);


沧海一幻觉
浏览 585回答 3
3回答

慕斯709654

不,不是。使用秒表(在System.Diagnostics)Stopwatch sw = Stopwatch.StartNew();PerformWork();sw.Stop();Console.WriteLine("Time taken: {0}ms", sw.Elapsed.TotalMilliseconds);秒表自动检查是否存在高精度计时器.值得一提的是DateTime.Now通常比DateTime.UtcNow由于时区的工作,DST还有诸如此类的。UtcNow的分辨率通常为15 ms。看见约翰·查普曼的博客文章关于DateTime.Now精确的总结。有趣的事情:秒表又掉落了。DateTime.UtcNow如果您的硬件不支持高频计数器。您可以通过查看静态字段来检查秒表是否使用硬件来实现高精度。停站,高分辨率.

不负相思意

如果你想要快速而肮脏的东西,我建议你用秒表来提高精度。Stopwatch sw = new Stopwatch();sw.Start();// Do Worksw.Stop();Console.WriteLine("Elapsed time: {0}", sw.Elapsed.TotalMilliseconds);或者,如果您需要一些更复杂的东西,您可能应该考虑使用第三方分析器,例如蚂蚁.
随时随地看视频慕课网APP
我要回答