Is DateTime.Now the best way to measure a function#39;s performance?(DateTime.Now 是衡量函数性能的最佳方法吗?)
问题描述
我需要找到一个瓶颈,并且需要尽可能准确地测量时间.
I need to find a bottleneck and need to accurately as possible measure time.
以下代码片段是衡量性能的最佳方式吗?
Is the following code snippet the best way to measure the performance?
DateTime startTime = DateTime.Now;
// Some execution process
DateTime endTime = DateTime.Now;
TimeSpan totalTimeTaken = endTime.Subtract(startTime);
推荐答案
不,不是.使用 秒表(在 System.Diagnostics)
No, it's not. Use the Stopwatch (in System.Diagnostics)
Stopwatch sw = Stopwatch.StartNew();
PerformWork();
sw.Stop();
Console.WriteLine("Time taken: {0}ms", sw.Elapsed.TotalMilliseconds);
秒表自动检查是否存在高精度计时器.
Stopwatch automatically checks for the existence of high-precision timers.
值得一提的是,由于必须处理时区,夏令时等.
It is worth mentioning that DateTime.Now often is quite a bit slower than DateTime.UtcNow due to the work that has to be done with timezones, DST and such.
DateTime.UtcNow 通常具有 15 ms 的分辨率.请参阅 John Chapman 的博文,了解 DateTime.现在精确到一个很好的总结.
DateTime.UtcNow typically has a resolution of 15 ms. See John Chapman's blog post about DateTime.Now precision for a great summary.
有趣的琐事:如果您的硬件不支持高频计数器,秒表会退回到 DateTime.UtcNow.您可以通过查看静态字段 Stopwatch.IsHighResolution.
Interesting trivia: The stopwatch falls back on DateTime.UtcNow if your hardware doesn't support a high frequency counter. You can check to see if Stopwatch uses hardware to achieve high precision by looking at the static field Stopwatch.IsHighResolution.
这篇关于DateTime.Now 是衡量函数性能的最佳方法吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:DateTime.Now 是衡量函数性能的最佳方法吗?
基础教程推荐
- 错误“此流不支持搜索操作"在 C# 中 2022-01-01
- 将事件 TextChanged 分配给表单中的所有文本框 2022-01-01
- JSON.NET 中基于属性的类型解析 2022-01-01
- 如何动态获取文本框中datagridview列的总和 2022-01-01
- 是否可以在 asp classic 和 asp.net 之间共享会话状态 2022-01-01
- 从 VS 2017 .NET Core 项目的发布目录中排除文件 2022-01-01
- 全局 ASAX - 获取服务器名称 2022-01-01
- 首先创建代码,多对多,关联表中的附加字段 2022-01-01
- 在 VS2010 中的 Post Build 事件中将 bin 文件复制到物 2022-01-01
- 经典 Asp 中的 ResolveUrl/Url.Content 等效项 2022-01-01
