从开始到结束的时间,精度为20毫秒
本文关键字:精度 20毫秒 时间 开始 结束 | 更新日期: 2023-09-27 18:17:37
摘自本文http://blogs.msdn.com/b/ericlippert/archive/2010/04/08/precision-and-accuracy-of-datetime.aspx:
现在,问题"从开始到结束经过了多少时间?"answers"现在几点了?"是完全不同的问题。如果您想问的问题是关于某个操作花了多长时间,并且您想要一个高精度的答案,那么使用StopWatch类。它确实有纳秒级的精度和接近它的精度。
问题是-如果我需要从开始到结束的时间,我需要20毫秒的精度,我应该使用什么?
StopWatch
具有更好的精度,所以我担心我会为我不需要的"额外精度"支付处理器时间。
DateTime.Now
有我需要的精确,但它也有很多额外的东西,如月,年等,我再次担心这会使它慢得多。
本文将对您有所帮助:
http://www.dijksterhuis.org/timing-function-performance-stopwatch-class/总的来说秒表是更好的选择,这甚至是我个人的观点
StopWatch的唯一(相当大的?)开销是queryperformancfrequency的结合,它决定StopWatch是否会以高分辨率频率运行。实际上,只有当它没有高分辨率频率时,它才是一个开销。否则是一个更快的选择,因为它通过WIN32 QueryPerformanceCounter调用来获取时间戳,而不是DateTime.UtcNow.Ticks.
从我在网上读到现在StopWatch类从系统。诊断名称空间是用于计时的最佳类。
如果您希望精度低于1ms,请记住使用Elapsed。TotalMilliseconds属性来检索经过的时间。ElapsedMilliseconds以1 ms为单位跳变
using System;
using System.Diagnostics;
namespace MySolution
{
class Program
{
static void Main(string[] args)
{
var sw = Stopwatch.StartNew();
// code to be timed here
sw.Stop();
Console.WriteLine("Run time in ms = {0}", sw.Elapsed.TotalMilliseconds);
}
}
}