233

我正在寻找探查器以找到我的 C++ 代码中的瓶颈。我想找到一个免费的、非侵入式的、好的分析工具。我是一名游戏开发人员,我在 Xbox 360 上使用 PIX,发现它非常好,但它不是免费的。我知道 Intel VTune,但它也不是免费的。

4

13 回答 13

139

CodeXL现在已经取代 End Of Line'd AMD Code Analyst,两者都是免费的,但不如 VTune 先进。

还有Sleepy,它非常简单,但在很多情况下都能胜任。

注意:上述所有三个工具几年以来都没有维护过。

于 2008-09-15T22:18:51.870 回答
66

Very Sleepy是一个适用于 Windows 系统的 C/C++ CPU 分析器(免费)。

于 2010-06-07T14:38:03.363 回答
36

Proffy 很酷: http ://pauldoo.com/proffy/

免责声明:我写了这个。

于 2009-11-01T15:43:51.180 回答
19

有一个用于 MS VC 7.1 及更高版本的检测(功能精确)分析器,称为 MicroProfiler。您可以在此处 (x64)此处 (x86)获取它。它不需要对您的代码进行任何修改或添加,并且能够实时显示调用者和被调用者的函数统计信息,而无需关闭应用程序/停止分析过程。

它与 VisualStudio 集成,因此您可以轻松地启用/禁用项目的分析。也可以将它安装在干净的机器上,它只需要将符号信息与正在分析的可执行文件一起定位。

当来自非常困之类的采样分析器的统计近似值不够时,此工具很有用。

粗略的比较表明,它优于 AQTime(当它在检测、函数级运行中调用时)。以下程序(完全优化,内联禁用)使用微分析器实时显示结果的运行速度比 AQTime 仅收集统计数据快三倍:

void f()
{
    srand(time(0));

    vector<double> v(300000);

    generate_n(v.begin(), v.size(), &random);
    sort(v.begin(), v.end());
    sort(v.rbegin(), v.rend());
    sort(v.begin(), v.end());
    sort(v.rbegin(), v.rend());
}
于 2012-01-24T05:50:02.910 回答
10

Microsoft 拥有Windows 性能工具包

它确实需要 Windows Vista、Windows Server 2008或 Windows 7。

于 2009-02-19T17:25:59.997 回答
6

另一个分析器是Shiny

​​​​​</p>

于 2009-09-14T14:30:36.857 回答
5

我强烈推荐Windows Performance Toolkit (WPT)XPERF

命令行 xperf 命令行工具记录可使用 GUI xperfview 工具分析的 Windows 事件跟踪 (ETW) 日志。

事实证明,使用stacktrace 命令行参数对我的公司来说是一个非常宝贵的工具,因为它可以分析和解决瓶颈问题。最引人注目的事情之一是 WPT 可以安装在任何环境中,甚至可以安装在古老的Windows XP上。

Windows 8 上,Windows 性能分析器将 xperf 提升到一个更高的水平。

ETW 日志中提供的硬数字和统计数据在细节上是无与伦比的,除了 Visual Studio Profiler (2010/2012),它也很棒,但不是免费的 AFAIK。

如果您从未使用过 xperf ...您不知道自己缺少什么

于 2013-05-01T01:15:57.667 回答
3

我使用 AQTime,它是我用过的最好的分析工具之一。它不是免费的,但您可以获得 30 天的试用期,因此如果您计划只优化和分析一个项目并且 30 天对您来说就足够了,那么我建议您使用此应用程序。(http://www.automatedqa.com/downloads/aqtime/index.asp

于 2008-09-16T04:47:45.680 回答
1

请尝试我的分析器,称为 cRunWatch。它只有两个文件,因此很容易与您的项目集成,并且只需要添加一行来检测一段代码。

http://ravenspoint.wordpress.com/2010/06/16/timing/

需要 Boost 库。

于 2011-01-06T16:34:01.967 回答
1

我使用了Luke Stackwalker,它为我的 Visual Studio 项目完成了这项工作。

其他有趣的项目是:

于 2013-10-31T09:10:25.137 回答
0

我多年来一直使用“TrueTime - Compuware DevPartner 套件的一部分。有一个 [免费版本](您可以尝试 Compuware DevPartner 性能分析社区版。)。)可用。

于 2008-09-16T03:24:31.730 回答
0

我使用 VSPerfMon,它是 StandAlone Visual Studio Profiler。我编写了一个 GUI 工具来帮助我运行它并查看结果。

http://code.google.com/p/vsptree/

于 2009-02-28T02:11:20.610 回答
0

您可以使用 EmbeddedProfiler,它对 Linux 和 Windwos 都是免费的。

探查器是侵入性的(按功能),但它不需要任何代码修改。只需添加一个特定的编译器标志(-finstrument-functios 用于 gcc/MinGW 或 /GH 用于 MSVC)并链接分析器的库。它可以为您提供完整的调用树或只是一个功能列表。它有自己的分析器 GUI。

于 2012-11-12T11:10:07.757 回答