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