我写了这个简单的控制台代码,但我无法解释结果。
public static void Execute2()
{
Stopwatch sw = new Stopwatch();
sw.Start();
while (sw.ElapsedMilliseconds < 1000)
{
Console.WriteLine(sw.ElapsedMilliseconds);
System.Threading.Thread.Sleep(100);
}
}
控制台上的输出:
0
127
228
328
429
530
630
731
831
931
Press a key to continue... (no debug)
如您所见,第一次调用后大约有 27 毫秒的偏移量,但在接下来的调用中,此偏移量保持不变。
我认为 27 毫秒是由调用 Thread.Sleep() 的开销造成的,但它只发生在第一次。这种行为在每次构建时都会重复(我在没有调试的情况下运行构建)
我的机器是:core 2 duo @ 2.8Ghz, 2gb ram, windows xp sp3, VS2010 pro
所以问题是:27ms 的原因是什么?