Windows 性能分析工具用作探查器

Posted

技术标签:

【中文标题】Windows 性能分析工具用作探查器【英文标题】:Windows Performance Analysis Tool usage as a profiler 【发布时间】:2010-02-01 13:57:23 【问题描述】:

我有一个使用 Visual Studio 2005 用 C++ 编写的应用程序。该应用程序存在一定的性能问题。我想探索在哪里。我需要深入了解应用程序大部分时间花费在哪些类/方法/行中。这可以用 WPA 完成吗?如果是的话,你能给我一个指向文档的指针吗?

【问题讨论】:

【参考方案1】:

不,WPT 利用 Windows 事件,它只会在 Windows 是导致您速度变慢的原因时帮助您诊断问题。您当然不会得到任何代码诊断。你需要的是一个真正的分析器。好东西要花钱。更多建议请查看this thread。

【讨论】:

【参考方案2】:

找出浪费时间的最简单方法是stackshots,您可以使用 Visual Studio 中的“暂停”按钮轻松获得。

您无需测量;您所要做的就是在行动中抓住它。如果您发现它在两个或多个堆栈快照上做某事,而这是您可以避免做的事情,您将节省大量时间。而且,您可以重复该过程,因为一开始很小的问题会随着您消除其他问题而“冒泡”。

【讨论】:

好建议,但不适合我的情况。该应用程序在 Windows 上运行良好(99% 的时间等待用户输入),性能问题仅在处理器慢得多且我根本没有调试器/分析器的嵌入式系统上可见。好的分析器可以提供帮助,因为它可以区分 0.5% 和 0.05% 的时间。 在这种情况下,我所做的是围绕每个 UI 驱动的处理循环(10 倍或 100 倍),以便“放大”正在发生的事情。这与减慢处理器速度具有相同的效果。将代码调到最短时间,然后删除循环。【参考方案3】:

试试YourKit .net profiler。我最近尝试了这个和其他几个,但这是我设法使用我的 C++/CLI 项目的唯一一个(混合了托管和非托管代码)。

[编辑]我将 WPA 解读为 WPF,并假设您想要分析一些 .net 代码。

【讨论】:

以上是关于Windows 性能分析工具用作探查器的主要内容,如果未能解决你的问题,请参考以下文章

Grails 应用程序的探查器

覆盖和探查器的组合?

是否有检测 .NET 探查器存在的 API?

.Net性能分析工具Profile

java,时间单独的if语句和循环而不是带有探查器的方法

Windows 上最好的免费 C++ 分析器是啥? [关闭]