什么是非常简单的C ++探查器(VC ++)?

时间:2010-04-12 19:11:53

标签: c++ visual-c++ profiling

我过去曾使用过一些分析器,但从未发现它们特别容易。也许我挑选了不好的,也许我真的不知道我在期待什么! 但是我想知道是否有任何“标准”分析器只是插入并工作?我不相信我需要大量详细的报告,只是为了获取主要的黑点。在这一点上,易用性对我来说更重要。

我们正在使用VC ++ 2008(我亲自运行标准版)。我不认为IDE中有任何工具,看不到主菜单我看不到任何工具?

5 个答案:

答案 0 :(得分:24)

我建议使用一种非常简单的方法(我从阅读Mike Dunlavey的帖子中了解到这一点):

暂停程序。

多次进行以获得合理的样本。如果一个特定的函数占用了程序执行时间的一半,那么很有可能你很快就会抓住它。

如果您将该功能的性能提高50%,那么您只需将总体执行时间提高25%。如果你发现它甚至根本不需要(我在短时间内发现了几个这样的情况,我一直在使用这种方法),你只需将执行时间缩短一半。

我必须承认,起初我对这种方法的功效持怀疑态度,但在尝试了几周之后,我就迷上了。

答案 1 :(得分:12)

VS内置:

如果您有团队版,则可以使用Visual Studio profiler


其他选项:

Otherwise check this thread


轻松创建自己的

我个人使用基于Win32 API QueryPerformanceCounter的内部构建的。 您可以在一百行或更少的代码中创建一些不错且易于使用的东西。

过程很简单:在每个要分析的函数顶部创建一个名为PROFILE_FUNC()的宏,它将添加到内部管理的统计信息中。然后有另一个名为PROFILE_DUMP()的宏,它将输出转储到文本文档。

PROFILE_FUNC()创建一个对象,该对象将使用RAII记录对象被销毁之前的时间量。这个RAII对象的构造函数和析构函数都将调用QueryPerformanceCounter。您还可以在代码中保留这些行,并通过#define PROFILING_ON

控制行为

答案 2 :(得分:3)

我总是使用AMD CodeAnalyst,我觉得它很容易使用并且给出了有趣的结果。我总是使用基于时间的配置文件,我发现它与我的应用程序的调试信息很好地配合,让我找到在过程,C ++指令和单汇编指令级别上花费的时间。

答案 3 :(得分:2)

我过去使用lt prof来快速运行我的C ++应用程序。它非常简单,可以使用已编译的程序运行,不需要和源代码挂钩或调整。我相信有一个试用版。

答案 4 :(得分:2)

一种非常简单(和免费)的配置文件方式是安装Windows调试器(cdb / windbg),在感兴趣的地方设置bp,然后发出wt命令(“跟踪和监视数据”) )。查看MSDN了解详情。