繁体   English   中英

dotTrace-我的桌面应用程序应使用哪些配置设置?

[英]dotTrace - what profiling settings should I use for my desktop app?

使用dotTrace时,我必须选择一种分析模式和一种时间测量方法。 分析模式为:

  • 追踪
  • 逐行
  • 采样

时间测量方法是:

  • 挂墙时间(性能计数器)
  • 线程时间
  • 挂墙时间(CPU指令)

跟踪和逐行不能使用线程时间测量。 但这仍然给我提供了七个不同的组合来尝试。 现在,我已经阅读了很多关于dotTrace帮助页面的信息,而我的知识仍然比开始选择哪一个更加了解。

我正在使用WPF应用程序,该应用程序读取Word文档,提取所有段落和样式,然后遍历提取的内容以挑选文档部分。 我正在尝试优化此过程。 (当前需要花费一个多小时才能完成,所以我正在尝试在给定的时间范围内进行分析,而不是直到完成为止。)

哪种配置文件和时间测量类型会给我最好的结果? 或者,如果答案是“取决于”,那么它取决于什么? 给定的配置文件模式或时间测量方法的优缺点是什么?

分析类型:

  • 采样 :最快但最不准确的分析类型,最小的探查器开销。 从本质上讲,等同于每秒多次暂停程序并查看堆栈跟踪; 因此,每个方法的调用次数是近似的。 对于在方法级别识别性能瓶颈仍然有用。

    以采样模式捕获的快照在磁盘上的占用空间要少得多(我说要少5-6个空间。)用于初始评估或对运行时间较长的应用程序进行性能分析(听起来像您的情况)。

  • 跟踪 :记录每种方法所花费的时间。 正在剖析的应用程序运行速度较慢,但​​作为回报,dotTrace会显示每个函数的确切调用次数,并且函数计时信息会更准确。 这有利于在方法级别深入研究问题的细节。

  • 逐行逐行描述程序。 最大的资源消耗,但最细粒度的分析结果。 减缓降编程方式 这里的首选策略是首先使用其他类型进行概要分析,然后手动选择功能以逐行进行概要分析。


至于仪表类型,我认为伟大的哈迪·哈里里(Hadi Hariri)在dotTrace Performance入门中对它们进行了很好的描述。

挂钟时间(CPU指令) :这是测量挂钟时间(即我们在挂钟上观察到的时间的最简单,最快的方法。 但是,在一些较旧的多核处理器上,由于内核计时器不同步,这可能会产生错误的结果。 在这种情况下,建议使用性能计数器。

墙壁时间(性能计数器) :性能计数器是Windows API的一部分,它允许以与硬件无关的方式进行时间采样。 但是,作为API调用,每项措施都需要花费大量时间,因此会影响已分析的应用程序。

线程时间 :在多线程应用程序中,并发线程会增加彼此的时间。 为了避免这种干扰,我们可以使用线程计时器来进行系统API调用,以获取OS调度程序给线程分配的时间。 缺点是获取线程时间样本比使用CPU计数器要慢得多,并且精度还受到线程调度程序使用的量子大小(通常为10ms)的限制。 仅在“分析类型”设置为“采样”时才支持此模式。

但是它们相差不大。


我不是自我剖析的向导,但在您的情况下,我将从采样开始以获取要花很长时间才能执行的功能列表,然后将其标记为逐行进行剖析。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM