gpt4 book ai didi

c# - DateTime 的默认时间精度是多少?

转载 作者:太空狗 更新时间:2023-10-30 00:24:28 25 4
gpt4 key购买 nike

我在 Visual Studio 中做了一个用于数据传输的小 winform 程序,我使用了一种方法来提供传输持续时间。传输完成后,程序将返回一个对话窗口以显示时间。

但是这里我不知道什么是时间精度,也不知道定时器的分辨率,怎么会这么精确,甚至微秒?

var startTime = DateTime.Now;
this.transferdata();
var endTime = DateTime.Now;
var timeElapsed = endTime.Subtract(startTime);

enter image description here

看到类DateTime的定义时,只有毫秒级的精度。谁能告诉我为什么 visual studio 2012 中有这么高分辨率的计时器?还是跟操作系统有关系?

最佳答案

时钟的精度取决于操作系统。系统时钟每秒滴答一定次数,您只能测量整个滴答。

您可以使用如下代码测试特定计算机的分辨率:

DateTime t1 = DateTime.Now;
DateTime t2;
while ((t2 = DateTime.Now) == t1) ;
Console.WriteLine(t2 - t1);

在我的计算机上,结果是 00:00:00.0156253,这意味着系统时钟每秒滴答 64 次。

(注意:DateTime 类型也有节拍,但这与系统时钟节拍不同。DateTime 节拍是 1/10000000 秒。)

要更精确地测量时间,您应该使用 Stopwatch 类。它的分辨率也取决于系统,但比系统时钟高得多。您可以从 Stopwatch.Frequency 属性获取分辨率,在我的计算机上它返回 2143566,它比 64 多一点...

工作前启动秒表,工作后停止,然后获取耗时:

Stopwatch time = Stopwatch.StartNew();
this.transferdata();
time.Stop();
TimeSpan timeElapsed = time.Elapsed;

这将以 TimeSpan 类型可以处理的分辨率返回时间,例如1/10000000 秒。您还可以根据滴答数计算时间:

double timeElapsed = (double)s.ElapsedTicks / (double)Stopwatch.Frequency;

关于c# - DateTime 的默认时间精度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25343998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com