1

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

1 回答 1

0

好吧,这很愚蠢。Stopwatch.ElapsedTicks就像时间跨度一样被使用。需要针对打印逻辑调整分辨率。

于 2012-10-29T13:15:43.353 回答