我正在尝试计算运行代码块所花费的时间。当我运行应用程序时,它会在每次执行时显示随机时间。这可能是什么问题?
var myTimer = Stopwatch.StartNew();
for(int i = 0; i < 10000; i++)
{
Console.WriteLine("Hello Boss !");
}
myTimer.Stop();
Console.WriteLine(myTimer.ElapsedMilliseconds);
Console.ReadLine();
答案 0 :(得分:1)
两件事:
1.-您的代码中没有问题,但我会像以下一样使用它:
var stopwatch = new Stopwatch();
stopwatch.Start();
//// YOUR LOOP OR CODE GOES HERE
stopwatch.Stop();
elapsedTime = stopwatch.ElapsedMilliseconds;
Console.WriteLine($"YOUR LOOP OR CODE took {elapsedTime} ms");
如果你想重复使用秒表,你必须重置它:
stopwatch.Reset();
在重新开始之前。
2nd.-执行时间(计算机上的每个软件,不仅是这个代码)取决于您的机器工作负载,考虑资源(处理器和磁盘)是共享的,是确定进程优先级和线程管理的操作系统因此,你不会为不同的执行获得相同的值。
答案 1 :(得分:-1)
for循环迭代的执行很大程度上取决于机器资源。 根据资源的可用性,执行时间会不时变化。
如果您担心测试秒表,请尝试下面的代码:) 当然,大多数时候你会得到一个恒定的结果。
var myTimer = Stopwatch.StartNew();
Thread.Sleep(10000);
myTimer.Stop();
Console.WriteLine(myTimer.ElapsedMilliseconds);
Console.ReadLine();