我正在尝试使用内置分析器在 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()”将被调用很多次,即使在测试时它只运行一次。我可以减少应用程序的响应时间,这一点非常重要。
非常感谢您的任何答案!