我正在尝试使用Stopwatch
测量经过的时间,但始终得到的时间比实际经过的时间低3.1倍。我无法理解为什么会发生这种情况,代码很简单。我已经尝试了3台机器上的代码并获得了相同的结果(尽管硬件和软件几乎相同)。
i5-2500k,i5-2500,Windows 7 64位,Windows 8 RTM 64位
Stopwatch sw = new Stopwatch();
sw.Restart();
DateTime start = DateTime.Now;
for (int i = 0; i < 5; i++)
{
Thread.Sleep(1000);
}
DateTime end = DateTime.Now;
sw.Stop();
Console.WriteLine("Time passed: " + StringFormatter.ToShortString(sw));
Console.WriteLine("Time passed: " + StringFormatter.ToShortString(end - start));
结果一直是~3.1次。
Time passed: 00:00:01.6347
Time passed: 00:00:05.0600
延迟10秒:
Time passed: 00:00:03.2358
Time passed: 00:00:10.0100
答案 0 :(得分:0)
好的,这是愚蠢的。 Stopwatch.ElapsedTicks
被用作时间跨度。需要针对打印逻辑调整分辨率。