C#秒表显示错误的时间
我看过其他用户post显示秒表测量在“Thread.Sleep(5000)”中花费的时间约为5000毫秒。
但是我的程序会产生以下结果
for (int i = 0; i < 20; ++i) { Stopwatch sw = Stopwatch.StartNew(); DateTime start = DateTime.Now; Thread.Sleep(5000); sw.Stop(); Console.Out.WriteLine( "StopWatch Diff:" + sw.ElapsedMilliseconds.ToString()); Console.Out.WriteLine( "DateTime Diff:" + DateTime.Now.Subtract(start).TotalMilliseconds.ToString()); }
秒表差异:1684 DateTime Diff:5262.592 秒表差异:1625 DateTime Diff:4997.12 秒表差异:1604 DateTime Diff:4997.12 秒表差异:1601 DateTime Diff:4997.12 秒表差异:1690 DateTime Diff:4997.12 秒表差异:1603
只是我在观察这种行为吗? 为什么秒表在实际经过5秒后测量为1.6秒。 这是线程实际运行的时间?
秒表课程不可靠 。
这对于没有恒定时钟速度的处理器来说是不可靠的(大多数处理器可以降低时钟速度以节省能量)。 这将在此详细解释。