1

を使用して経過時間を測定しようとしてStopwatchいますが、実際の経過時間よりも約3.1倍短い時間を一貫して取得しています。なぜこれが起こるのか、私は指を置くことができません。コードは非常に単純です。私は3台のマシンでコードを試しましたが、同じ結果が得られました(ただし、ハードウェアとソフトウェアはほぼ同じです)。

i5-2500k、i5-2500、Windows 7 64ビット、Windows 8RTM64ビット

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 に答える