在我的 C# 应用程序中分析几个函数的性能。我正在使用 .Net 秒表对超过 20,000 个调用的函数进行计时。每次通话的时间约为 2.8 毫秒。
但是,在逐行模式下使用 dotTrace 时,我发现对我的函数进行 20,000 次调用需要 249,584 毫秒,即每次调用约 12.5 毫秒。
现在,该函数附加到一个调度计时器,因此秒表位于函数内部,而不是注册调用本身。像这样:
private static Stopwatch myStop = new Stopwatch();
private MyFunction(object obj, EventArgs e)
{
myStop.Start()
//Code here
myStop.Stop();
Console.WriteLine("Time elapsed for View Update: {0}", myStop.Elapsed);
myStop.Reset();
}
但是,我很难相信通话平均需要 10 毫秒。
是否还有其他可能影响分析器或秒表计时的因素?调度计时器事件对时间的影响那么大吗?
我浏览了一些 JetBrains 论坛,但找不到任何与此相关的内容,但我确信我本可以更努力地寻找并将继续这样做。我确实意识到秒表在某些方面是不可靠的,但没想到会这么严重。
应该注意的是,这是我第一次在 C# 或 .Net 中分析代码。