gpt4 book ai didi

.net - 为什么 .NET 秒表的 ElapsedTicks * 10 000 不等于 ElapsedMilliseconds?

转载 作者:行者123 更新时间:2023-12-02 15:42:48 28 4
gpt4 key购买 nike

我正在尝试对一些代码进行性能测试。我正在使用秒表。当我输出毫秒数时,它总是告诉我 0,所以我想我应该尝试滴答数。我看到刻度数约为 20 000 到 30 000。查看 MSDN 的 TimeSpan.TicksPerMillisecond,它说每毫秒有 10 000 个刻度。那么为什么我的秒表上经过的毫秒数没有显示为 2 或 3?

我错过了什么?我什至在同一行输出了结果。这就是我得到的。

Time taken: 26856 ticks, 0 ms

而且它是恒定的。

这是我在循环中运行的代码。我意识到我每次都会创建一个新的秒表,这不是很有效,但我不明白它会如何影响我的结果。

Dim SW = New Stopwatch()
SW.Reset()
SW.Start()
MethodCall()
SW.Stop()
Console.WriteLine(String.Format("Time to increase counters: {0} ticks, {1} ms", SW.ElapsedTicks, SW.ElapsedMilliseconds))

最佳答案

Stopwatch 刻度与DateTime 刻度不同。

Stopwatch 刻度的长度取决于秒表频率(一刻度等于一秒除以频率,如 the MSDN documentation for Stopwatch.ElapsedTicks 中所述。

可以说,Stopwatch.ElapsedTicks 是该属性的一个糟糕的名称选择,因为可能会与 DateTime 刻度混淆。我更喜欢 ElapsedRawTicks 之类的东西,或者其他一些合适的形容词限定符来暗示这些不是标准的 Ticks。

关于.net - 为什么 .NET 秒表的 ElapsedTicks * 10 000 不等于 ElapsedMilliseconds?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3007501/

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