我写了这个简单的控制台代码,但我无法解释结果。
public static void Execute2()
{
Stopwatch sw = new Stopwatch();
sw.Start();
while (sw.ElapsedMilliseconds < 1000)
{
Console.WriteLine(sw.ElapsedMilliseconds);
System.Threading.Thread.Sleep(100);
}
}
控制台上的OUTPUT:
0
127
228
328
429
530
630
731
831
931
Press a key to continue... (no debug)
正如您所看到的,第一次调用后大约有27 ms的偏移,但是在跟随调用后,此偏移量保持不变。
我认为调用Thread.Sleep()的开销是27 ms,但它只是第一次发生。此行为重复每个构建(我运行构建而不调试)
我的机器是:核心2 duo @ 2.8Ghz,2gb ram,windows xp sp3,VS2010 pro
所以问题是:27ms的责任是什么?
答案 0 :(得分:2)
它可以是很多东西,例如:
答案 1 :(得分:0)
呼叫
Thread.Sleep(100);
开始之前。并在“真实”代码之前进行任何控制台输出