我应该为Environment.TickCount创建一个包装类吗
本文关键字:一个 包装类 Environment TickCount 创建 我应该 | 更新日期: 2023-09-27 18:26:13
可能重复:
Environment.TickCount与DateTime.Now
在我的应用程序中,我需要快速计时操作,但准确性并不那么重要。我检查了我熟悉的三种定时操作的运行速度,得出了以下结果:
for (int i = 0; i < 1000000; i++)
{
// var time = (DateTime.Now - dt).TotalMilliseconds; // 1131 ms
// var time = (Environment.TickCount - dt); // 7 ms
// var time = stopwatch.ElapsedMilliseconds; // 131 ms
}
使用Stopwatch
检查时间。所以,我想使用Environment.TickCount
(我想!),但它的问题是,在24.9天后,如果用户非常不走运,就会发生2,147,483,647 - -2,147,483,648
的操作,并导致溢出错误和程序崩溃。
所以,我的问题有两个方面。首先,考虑到我指定的目标,Environment.TickCount
是这份工作的最佳工具吗?其次,是否有其他人为它编写了包装类?如果是,你是如何考虑到这种罕见的溢出机会的?
虽然我认为这是关于TickCount与Now的讨论的重复。。。
TickCount是你自己决定的最佳工具吗。如果100毫秒对你计划测量的100万次操作很重要——可能吧,但我强烈怀疑,由于TickCount的精度是10毫秒,那么多次测量的平均误差大约是5毫秒*10^6。
我认为您应该为时间度量创建包装器类,但主要不是为了防止包装,而是为了允许对代码进行单元测试。模拟系统范围内的时间函数并不容易,但可以设置自定义类以便于使用和测试。