在我的应用程序中,我需要快速计时操作,但准确性并不重要。我检查了我熟悉的三个计时操作的运行时速度,并得出了这些结果:
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
是给定我的指定目标的最佳工具,其次,是否有其他人为它编写了一个包装类,如果是这样,你是如何考虑到罕见的溢出机会?
答案 0 :(得分:0)
虽然我认为这与TickCount vs. Now ...
的讨论重复TickCount是您自己决定所需的最佳工具。如果100ms对您计划测量的100万次操作很重要 - 可能,但是我强烈怀疑TickCount的精度是10ms,因为许多测量的平均误差大约是5ms * 10 ^ 6。
我认为您应该为时间测量创建包装类,但主要不是为了防止环绕,而是允许对代码进行单元测试。模拟系统范围的时间函数并不容易,但可以设置自定义类以便于使用和测试。