gpt4 book ai didi

c# - Stopwatch.Gettimestamp 是否会翻转?还是回滚?

转载 作者:太空狗 更新时间:2023-10-29 21:18:59 41 4
gpt4 key购买 nike

在使用 Stopwatch.GetTimestamp() 时我们发现,如果您记录返回值,然后继续调用它并与之前的返回值进行比较,它最终会意外地返回一个小于原始值的值。

这是预期的行为吗?

在生产代码中这样做的目的是获得精确到微秒的系统时间。

该技术涉及调用 DateTime.UtcNow 以及分别调用 Stopwatch.GetTimestamp() 作为 originalUtcNow 和 originalTimestamp。

从那时起,应用程序只需调用 Stopwatch.GetTimestamp() 并使用 Stopwatch.Frequency 计算与 originalTimestamp 变量的差异,然后将该差异添加到 originalUtcNow。

然后,Voila...一个高效且准确的微秒 DateTime。

但是,我们发现有时 Stopwatch.GetTimestamp() 会返回较小的数字。

这种情况很少发生。我们的想法是在发生这种情况时简单地“重置”并继续。

但是,这让我们怀疑 Stopwatch.GetTimestamp() 的准确性或怀疑 .Net 库中存在错误。

如果您能阐明这一点,请做。

仅供引用,根据当前时间戳值、频率和 long.MaxValue,除非是硬件问题,否则它似乎不太可能在我们的生命周期内滚动。

编辑:我们现在“按线程”计算这个值,然后“钳制它”以观察内核之间的跳转以重置它。

最佳答案

您可能会及时获得跳跃,因为您的线程正在跳跃核心。请参阅此页面上的“注释”:http://msdn.microsoft.com/en-us/library/ebf7z0sw.aspx

关于c# - Stopwatch.Gettimestamp 是否会翻转?还是回滚?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8980786/

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