Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从开始到结束所用的时间,精度为20毫秒_C# - Fatal编程技术网

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

C# 从开始到结束所用的时间,精度为20毫秒,c#,C#,从这篇文章中: 现在,问题“从开始到结束已经过去了多少时间?”与“现在是几点?”完全不同。如果您想问的问题是某个操作需要多长时间,并且您想要高精度、高精度的答案,那么请使用秒表类。它确实有纳秒级的精度,精度接近它的精度 问题是-如果我需要从开始到结束的时间,并且需要20毫秒的精度,我应该使用什么 秒表的精度要高得多,所以我担心我会为我不需要的“额外精度”支付处理器时间 DateTime。现在精确到了我需要的精度,但它还有很多额外的东西,如月份、年份等,我再次担心这会使它慢得多。这篇文章应该可以帮

从这篇文章中:

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

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

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


DateTime。现在
精确到了我需要的精度,但它还有很多额外的东西,如月份、年份等,我再次担心这会使它慢得多。

这篇文章应该可以帮助您:


总的来说,它说秒表是更好的选择,这甚至是我个人的观点。

秒表唯一(相当大的?)开销是包含查询性能频率,以确定秒表是否将以高分辨率频率运行。实际上,只有在没有高分辨率频率的情况下,这才是一种开销。否则是一个更快的选项,因为它使用WIN32 QueryPerformanceCounter调用而不是DateTime.UtcNow.Ticks来获取时间戳。

从我在internet上读到的直到现在都是System中的类。Diagnostics命名空间是用于计时的最佳类

如果希望精度低于1毫秒,请记住使用Epersed.TotalMillistics属性检索经过的时间,sw.ElapsedMillistics以1毫秒为增量跳跃

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

我会用秒表,不用担心额外的精度带来的开销。担心性能一旦出现问题,90%的情况下,这种差异根本不重要all@SebastianPiu我正在写新的代码,我应该选择一种或另一种方式。两者都同样难以实现,可读性也同样好。即使性能不是问题,我也希望选择最快的方法,因为没有其他参数可供比较。但请注意,即使滴答声为0.1毫秒,结果也不像看上去那样精确,因为根据硬件的不同,每次更新仅每隔15到55毫秒进行一次。你可以在Jürgen Bayer的“c#codebook”中找到更精确的方法(或者在代码项目中搜索“高精度”秒表)