我过去曾使用过一些分析器,但从未发现它们特别容易。也许我挑选了不好的,也许我真的不知道我在期待什么! 但是我想知道是否有任何“标准”分析器只是插入并工作?我不相信我需要大量详细的报告,只是为了获取主要的黑点。在这一点上,易用性对我来说更重要。
我们正在使用VC ++ 2008(我亲自运行标准版)。我不认为IDE中有任何工具,看不到主菜单我看不到任何工具?
答案 0 :(得分:24)
我建议使用一种非常简单的方法(我从阅读Mike Dunlavey的帖子中了解到这一点):
暂停程序。
多次进行以获得合理的样本。如果一个特定的函数占用了程序执行时间的一半,那么很有可能你很快就会抓住它。
如果您将该功能的性能提高50%,那么您只需将总体执行时间提高25%。如果你发现它甚至根本不需要(我在短时间内发现了几个这样的情况,我一直在使用这种方法),你只需将执行时间缩短一半。
我必须承认,起初我对这种方法的功效持怀疑态度,但在尝试了几周之后,我就迷上了。
答案 1 :(得分:12)
VS内置:
如果您有团队版,则可以使用Visual Studio profiler。
其他选项:
轻松创建自己的
我个人使用基于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了解详情。