system.diagnostics.Stopwatch计时器以3倍关闭



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

好吧,这很愚蠢。Stopwatch.ElapsedTicks被使用,好像是时间板一样。需要调整分辨率以打印逻辑。