Windows上最好的免费C ++ Profiler是什么?[关闭]


224

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


VTune现在似乎是免费的:software.intel.com/en-us/vtune。我下载了社区版,它在分析C ++和托管C#代码方面做得非常出色
ABT博士,

1
这个问题如何?据我所知,开发工具是热门话题。它是基于意见的。
Nic Szerman

Answers:


135

CodeXL现在已经取代了End Of Line的AMD Code Analyst,两者都是免费的,但不如VTune先进。还有Sleepy,它很简单,但是在很多情况下都能完成任务。



1
我现在尝试使用它,根本不喜欢它。我什至不知道如何获得TrueTime可以在10年前完成的函数的总时间百分比(包括被调用方)。
Pavel Radzivilovsky 2011年

我编写了一份sleepy的改编版,它不依赖于wxWidgets,而是在命令行中运行。您在运行中的进程上运行了一段时间,然后在停止它时,获得了该进程正在花费时间的统计信息。它是非信任的,因为您不必以任何方式修改代码即可使用它,但是它在读取调用栈时会挂起线程。您还需要可用的pdb文件,以便获得有意义的输出,但是我想这适用于任何事件探查器。
CashCow 2012年

我建议尝试使用xperf,我发现它优于AMD代码分析师。
MW_dev

1
除了严重的错误修复之外,CodeAnalyst将不再接收任何更新。他们切换到CodeXL。这是链接,因此您可以更新答案。顺便说一句,感谢您让我现在谈谈CodeAnalyst / XL。
Adri CS 2014年

61

Very Sleepy是Windows系统的C / C ++ CPU分析器(免费)。
CppCheck是Windows系统的静态C / C ++ CPU分析器(免费)。


20
googletest是一个单元测试框架。您将如何使用它执行性能分析?
greatwolf 2011年

如果您使用的是gcc堆栈中的Windows二进制文件,那么这是一个不错的选择-AMD CodeAnalyst在Windows上无法识别gcc符号,但是很困!
Mike


17

对于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());
}

1
它易于使用和超快速的探查器。我唯一未解决的问题是调试完成后,探查器窗口不会自动关闭,您必须通过任务管理器将其杀死(没有重新编译项目的权限)。
卢德·沃迪卡

1
我发现使用常规的CLOSE按钮关闭应用程序后,探查器窗口也可以定期关闭。但是,当我通过SHIFT + F5快捷方式(停止调试VS命令)退出应用程序时,探查器窗口关闭按钮被禁用。
路德·沃迪卡

不适用于
VS2015。– rustyx

1
自1.1.590起已修复。请参见Visual Studio库页上进行更新(visualstudiogallery.msdn.microsoft.com/...
附庸风雅

1
这真的很好!应该排名更高!超级简单的安装和运行,并为您提供了大多数您需要了解的知识。我的第二个选择是Windows Performance Analyzer:geekswithblogs.net/akraus1/archive/2015/04/21/163342.aspx
Steve


7

新增功能是Shiny

​​​​​


3
无法找到可下载的二进制文件,仅能找到源代码。不太方便。
主教

5

我强烈建议Windows Performance Toolkit(WPT)XPERF

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

对于我的公司来说,使用stacktrace命令行争论已被证明是无价的工具,因为它可以分析并解决瓶颈问题。最引人注目的事情之一是WPT可以安装在任何环境中,甚至可以在古老的Windows XP上安装。

Windows 8上,Windows Performance Analyzer使xperf达到了更高的水平。

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

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


1
好吧,我知道我缺少该网站的有效URL。
托马什Zato -恢复莫妮卡

3

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


只有此工具可以帮助我分析在IIS上以发布模式混合(托管和本机)Web应用程序编译的配置文件。
主教

不幸的是,他们不支持尝试评估其产品的人员。
幸运卢克,

目前,他们提供了功能有限的14天试用版。
2013年





0

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.