我应该为Environment.TickCount创建一个包装类吗



可能重复:
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。

我认为您应该为时间度量创建包装器类,但主要不是为了防止包装,而是为了允许对代码进行单元测试。模拟系统范围内的时间函数并不容易,但可以设置自定义类以便于使用和测试。

最新更新