我正在尝试使用Visual Studio内置的探查器来对一个.NET应用程序进行性能剖析。在跟踪CPU样本时,我发现了一些奇怪的问题。在应用程序的某个部分,我有以下代码(为清晰起见进行了简化):
var requestObject = new RequestObject(parameters);
var result = GetResult(requestObject,"stringvalue");
我看到第二行使用了约10%的样本。然而,方法´GetResult()´只使用了约7%,其余似乎在[clr.dll]中。我知道clr.dll负责垃圾收集、JIT编译、上下文切换等等,而´GetResult()´方法相当复杂(跨越多个程序集,可能使用多个线程),因此一些操作需要在方法返回后执行,这并不是不可行的。´RequestObject´也有点复杂,所以可能与此有关。
我的问题是:我能否精确追踪此处发生的情况,以及我能做什么来使它更快?请注意,3%听起来不多,但´GetResult()´将在程序生命周期内被调用很多次,即使在测试时只运行一次。而且降低应用程序的响应时间非常重要。
非常感谢您提前的任何答案!