1

对于我的工作,我使用 DotTrace 来分析我们的 WPF 桌面应用程序中客户端体验之一的缓慢性。我之前使用它来执行此操作,结果得出的结论是数据库调用速度很慢,然后我们可以找到解决方案。

然而,这一次,我看到 75% 的执行时间在本机代码中,并且在用户代码中没有明显的缓慢。我搜索了一些,发现其他几个人也有同样的问题。答案要么是正常的(之前的快照在用户代码中也只有一小部分执行时间,所以这看起来没问题),或者如果您在制作快照时选中“收集本机分配”框,您可以进一步分析它(不幸的是,我没有检查)。

如果我只检查用户代码,则大部分执行时间驻留在作为第三方 UI 组件的 DevExpress DLL 中。那么您能否说这正在朝着与硬件相关的缓慢发展(请参阅下面快照的用户代码部分)?

在此处输入图像描述

我使用时间线选项来创建快照。

我的问题:

  • 由于快照在真正的用户代码(不包括 DevExpress 组件)中没有显示很多时间,那么我是否可以得出结论,这种缓慢不是由于我们的代码效率低下造成的?
  • 我可以从快照的本机代码部分看出什么吗(见下面的截图)?
  • 对于这种情况,时间线是否更方便,或者其他采样选项之一是否更清晰?
  • 在这种情况下,我将如何继续靠近缓慢的根源?

在此先感谢您的帮助!

塞巴斯蒂安

快照的本机代码部分: 在此处输入图像描述

4

1 回答 1

1

本机部分始终由托管代码调用。

在这种情况下,时间线效率不高。在这里,您仅过滤了本机部分。

对于这种分析,我建议使用采样模式,您可以更好地了解热点。本机部分仍然存在,但您可以看到哪个托管代码调用了它。

于 2018-12-18T10:32:42.903 回答