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

时间:2012-02-28 17:54:22

标签: c# wrapper timing stopwatch

  

可能重复:
  Environment.TickCount vs 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是给定我的指定目标的最佳工具,其次,是否有其他人为它编写了一个包装类,如果是这样,你是如何考虑到罕见的溢出机会?

1 个答案:

答案 0 :(得分:0)

虽然我认为这与TickCount vs. Now ...

的讨论重复

TickCount是您自己决定所需的最佳工具。如果100ms对您计划测量的100万次操作很重要 - 可能,但是我强烈怀疑TickCount的精度是10ms,因为许多测量的平均误差大约是5ms * 10 ^ 6。

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