从开始到结束的时间,精度为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有我需要的精确,但它也有很多额外的东西,如月,年等,我再次担心这会使它慢得多。

从开始到结束的时间,精度为20毫秒

本文将对您有所帮助:

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);
        }
    }
}