2010-04-12 63 views
13

我在过去使用过几个配置文件,从来没有发现它们特别简单。也许我选择了不好的,也许我真的不知道我在期待什么! 但是我想知道是否有任何简单的入门和工作的“标准”轮廓仪?我不认为我需要大量详细的报告,才能找到主要的黑点。在这一点上,易用性对我来说更为重要。什么是一个非常简单的C++分析器(VC++)?

这是我们正在使用的VC++ 2008(我个人运行标准版)。我不认为IDE中有任何工具可以用于此目的,但是看不到主菜单中的任何工具?

+0

请参阅http://stackoverflow.com/questions/67554/whats-the-best-free-c-profiler-for-windows-if-there-are – SjB 2010-04-12 19:18:33

回答

10

VS内置:

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


其他选项:

Otherwise check this thread


创建自己的轻松:

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

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

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

+0

尝试昏昏欲睡,尚未完全确定它。 – 2010-04-12 19:55:33

+1

我讨厌微软是如何使用一款出色的工具(Visual Studio Professional),并且定价完美的探测器这样的强大功能。因此,我不是从我那里得到一个600美元的保证,而是使用mingw并使用试验和错误。 – 2010-04-12 20:07:08

+0

@Chris:我从字面上*无法相信*你拥有的权利感。 MS为$ 0提供了一个出色的优化编译器和IDE,并且仍然有人抱怨。你意识到他们需要在免费版本中保留*一些理想的功能,这样人们才会购买Pro,对吧? – 2011-10-14 04:35:32

2

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

+0

++我只是遵循这个链接,它看起来很有希望。它显然是通过堆栈采样工作并提供行​​级解析。我不知道它是否允许在I/O或其他阻塞期间采样,这将允许检测不必要的I/O。 – 2010-04-12 21:57:05

+1

我刚试过LTProf。我喜欢的是它提供了行级别的百分比,并且它在I/O(Yay !!)中进行了抽样。然后,我很伤心地发现无法手动开启/关闭采样,就像使用热键一样。因此,如果一个程序是交互式的,就没有办法说“立即采样”,而不是等待用户输入。 – 2010-06-05 23:51:01

22

我提出一个非常简单的方法(这是我从读Mike Dunlavey“的帖子上了解到SO):

只是暂停程序。

做几次得到一个合理的样本。如果一个特定的函数占用了程序执行时间的一半,那么很可能你会很快赶上它。

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

我必须承认,起初我很怀疑这种方法的功效,但经过几个星期的尝试后,我很迷惑。

+10

++是的,恐怕我已经制作了一个宣传这种技术的皇室害虫,但是它可以帮助它,它很有效。 (重要的是看看调用堆栈,有时候人们会说“这是在一些系统例程中 - 这是什么好处?”当问题显而易见时有几个级别) – 2010-04-12 20:01:06

+0

我对此持怀疑态度。但是,我可以证实这确实有效。特别是,如果你的程序执行速度很慢。最重要的是,不需要代码钩子。 – 2016-03-23 21:53:06

3

我总是使用AMD CodeAnalyst,我觉得它很容易使用,并给出有趣的结果。我总是使用基于时间的配置文件,在该配置文件中,我发现它与我的应用程序的调试信息很好地协作,让我可以找到在程序,C++指令和单个装配指令级别花费的时间。

2

配置文件的一个非常简单的(免费的)方法是安装Windows调试器(cdb/windbg),在感兴趣的地方设置一个bp,然后发出wt命令(“跟踪和观察数据”)。检查出MSDN欲知更多信息。

+0

++我以前使用windbg,并依赖于Ctrl-C方法。如果我想让它慢慢运行,我会使用Watch Data,如你所建议的。 – 2010-04-12 22:01:17