我尝试捕获函数的确切执行时间
Stopwatch regularSW = new Stopwatch();
for (int i = 0; i < 10; i++) {
regularSW.Start();
//function();
regularSW.Stop();
Console.WriteLine("Measured time: " + regularSW.Elapsed);
}
Run Code Online (Sandbox Code Playgroud)
我也试图与DateTime和Process.GetCurrentProcess().TotalProcessorTime
但每次我得到不同的值.
我怎么能得到相同的价值?
有了StopWatch你已经在使用最准确的方法.但是你没有在循环中重新启动它.它总是从它结束的值开始.你要么必须创建一个新的StopWatch或调用StopWatch.Restart而不是Start:
Stopwatch regularSW = new Stopwatch();
for (int i = 0; i < 10; i++) {
regularSW.Restart();
//function();
regularSW.Stop();
Console.WriteLine("Measured time: " + regularSW.Elapsed);
}
Run Code Online (Sandbox Code Playgroud)
这就是不同价值观的原因.如果你现在仍然得到不同的值,那么原因是该方法function确实具有不同的执行时间,这是不可能的(如果它是数据库查询,则为fe).
由于这个问题似乎主要是理论上的(关于你的评论),如果你想在.NET中测量时间,请考虑以下事项:
最后两点是从Eric Lippert的回答中复制的(值得一读).