System.Diagnostics.Stopwatch计时器关闭3倍

时间:2012-10-29 13:09:06

标签: performance timer

我正在尝试使用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

1 个答案:

答案 0 :(得分:0)

好的,这是愚蠢的。 Stopwatch.ElapsedTicks被用作时间跨度。需要针对打印逻辑调整分辨率。