为了账号安全,请及时绑定邮箱和手机立即绑定

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

/ 猿问

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

沧海一幻觉 2019-06-25 12:58:46

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

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

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

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


查看完整描述

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如果您的硬件不支持高频计数器。您可以通过查看静态字段来检查秒表是否使用硬件来实现高精度。停站,高分辨率.


查看完整回答
反对 回复 2019-06-25
?
不负相思意

如果你想要快速而肮脏的东西,我建议你用秒表来提高精度。

Stopwatch sw = new Stopwatch();sw.Start();// Do Worksw.Stop();Console.WriteLine("Elapsed time: {0}", sw.Elapsed.TotalMilliseconds);

或者,如果您需要一些更复杂的东西,您可能应该考虑使用第三方分析器,例如蚂蚁.


查看完整回答
反对 回复 2019-06-25
  • 3 回答
  • 0 关注
  • 367 浏览
我要回答

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信