首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从开始到结束经过20 ms的精度

从开始到结束经过20 ms的精度
EN

Stack Overflow用户
提问于 2011-12-12 09:19:55
回答 3查看 213关注 0票数 2

从本文中http://blogs.msdn.com/b/ericlippert/archive/2010/04/08/precision-and-accuracy-of-datetime.aspx

现在,问题是“从开始到结束已经过了多长时间?”和“现在几点了”是完全不同的问题吗?如果您想问的问题是某个操作花费了多长时间,并且您想要一个高精度、高精度的答案,那么请使用StopWatch类。它确实有纳秒的精度和精度,接近它的精度。

问题是,如果我需要从开始到结束的时间,并且需要20毫秒的精度,我应该使用什么?

StopWatch的精度要好得多,所以我担心我会为我不需要的“额外精度”支付处理器时间。

DateTime.Now有我所需要的精确性,但它也有很多额外的东西,如月份、年份等,我再次担心这会使它慢得多。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-12 09:23:16

这篇文章应该能帮助你:

http://www.dijksterhuis.org/timing-function-performance-stopwatch-class/

一般来说,它说秒表是更好的选择,这甚至是我的个人意见。

票数 3
EN

Stack Overflow用户

发布于 2011-12-12 09:36:51

唯一的(相当大的?)StopWatch的开销是QueryPerformanceFrequency的合并,以确定StopWatch是否会以高分辨率的频率进行。实际上,只有在没有高分辨率频率的情况下,它才是一个开销。否则是一个更快的选项,因为它使用WIN32 QueryPerformanceCounter调用而不是DateTime.UtcNow.Ticks获得时间戳。

票数 1
EN

Stack Overflow用户

发布于 2011-12-12 09:37:06

据我在互联网上所读到的,直到现在,来自System.Diagnostics命名空间的System.Diagnostics类是用于计时的最好的类。

如果希望精度低于1ms,请记住使用Elapsed.TotalMilliseconds属性检索经过的时间,sw.ElapsedMilliseconds将以1ms的增量跳转。

代码语言:javascript
复制
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);
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8472124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档