什么是Windows下最好的免费C++分析器?

240

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


2
VTune现在似乎是免费的了:https://software.intel.com/en-us/vtune。我下载了社区版,它可以很好地对C++和托管的C#代码进行分析。 - Dr. Andrew Burnett-Thompson
3
这个问题为什么算离题?据我所知,开发工具是一个合适的话题。不过这个问题确实存在基于观点的成分。 - Nic Szerman
13个回答

143

CodeXL现在已经取代了停止更新的AMD Code Analyst,两者都是免费的,但不像VTune那样先进。

还有一个名为Sleepy的工具,非常简单,但在许多情况下可以胜任。

注意:以上所有三个工具自几年前以来一直未得到维护。


5
这是 CodeAnalyst 的链接:http://developer.amd.com/CPU/CODEANALYST/Pages/default.aspx。 - epotter
1
我现在尝试使用它,但完全不喜欢。我甚至无法理解如何获取函数的总时间百分比(包括被调用者),而TrueTime在10年前就可以很好地完成。 - Pavel Radzivilovsky
1
CodeAnalyst将不再接收任何更新,除了关键性的漏洞修复。他们转向了CodeXL。这是链接,所以你可以更新你的答案。顺便说一下,感谢你让我知道CodeAnalyst/XL。 - Adri C.S.
值得一提的是,CodeXL在AMD处理器上表现最佳。在非AMD处理器上,它无法显示方法级别准确的计时。 - rustyx
AMD CodeXL根本不起作用。它会导致Visual Studio崩溃,大多数面板从未收集任何数据,输出也令人困惑。它还不能自动加载项目中的符号。 - Tomáš Zato
显示剩余3条评论

67

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


如果你正在使用来自gcc栈的Windows二进制文件,这是一个很好的选择 - AMD CodeAnalyst无法在Windows上识别gcc符号,但Very Sleepy可以! - Mike
1
请注意,Very Sleepy 的最新版本是2014年发布的。 - Zitrax
Very Sleepy v0.91现已发布:https://github.com/VerySleepy/verysleepy/releases/tag/v0.91 - Vladimir Panteleev

38

1
#不要脸的自我推销 :) 眨眨眼* - Yunfei Chen

19
有一种名为MicroProfiler的仪器化(函数级别)性能分析工具适用于MS VC 7.1及更高版本。你可以从这里(x64)这里(x86)下载该工具,它不需要对代码进行任何修改或添加,能够实时显示函数统计信息以及调用者和被调用者,而无需关闭应用程序或停止分析过程。
该工具可以与Visual Studio集成,因此您可以轻松地启用/禁用项目的性能分析功能。同时也可以在新机器上安装,只需要将符号信息与要进行分析的可执行文件放在同一个位置即可。
当像Very Sleepy之类的采样分析器提供的统计近似值不足以满足您的需求时,这个工具非常有用。
初步比较显示,在仪器化、函数级运行模式下,它击败了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
这是一个易于使用且超快的分析器。唯一没有解决的问题是,在完成调试后,分析器窗口不会自动关闭,您必须通过任务管理器将其关闭(否则无法重新编译项目)。 - Ludek Vodicka
1
我发现当我使用常规的关闭按钮关闭我的应用程序后,性能分析器窗口也可以正常关闭。但是当我使用SHIFT+F5快捷键退出应用程序(停止调试VS命令)时,性能分析器窗口的关闭按钮被禁用了。 - Ludek Vodicka
不支持VS 2015。 - rustyx
1
已修复,版本号为1.1.590。请查看Visual Studio Gallery页面上的更新(https://visualstudiogallery.msdn.microsoft.com/133d5764-b32b-4ec9-8ee8-5546eca64584)。 - Arty
1
这真的非常好!应该排名更高!安装和运行超级简单,并且提供了大部分你需要知道的内容。我的第二选择是Windows性能分析器:http://geekswithblogs.net/akraus1/archive/2015/04/21/163342.aspx - Steve
显示剩余2条评论

10

6
它怎么不是免费的呢?它是Windows SDK的一部分。我能够毫无问题地下载它。(诚然,我们有一个MSDN订阅,所以有些人可能与我的经历不同。) - epotter
1
无论是否免费,该链接已无法正常工作。 - Tomáš Zato

6
另一个性能分析工具是Shiny

​​​​​


3
找不到可下载的二进制文件,只有源代码。不是很方便。 - Monsignor

5
我强烈推荐使用Windows性能工具包中的Windows Performance Analyzer (WPA)。命令行Windows Performance Recorder (WPR)工具记录了可以稍后使用Windows性能分析器工具进行分析的Windows事件跟踪(ETW)日志。有一些很好的教程可以帮助学习如何使用该工具。
wpr.exe -start CPU
...
wpr.exe -stop output.etl
wpa.exe output.etl

1
我知道我缺少工作网站的URL。 - Tomáš Zato
我刚试过了,但它从未为我的应用程序加载.pdb文件(在将构建文件夹添加到符号路径之后),因此如果您实际上想要对C++代码进行分析,它就有点无用了。 它对于您想学习系统执行的其他所有操作非常有用-它提供了一个惊人的大局观。 但是对于C++分析,它什么也没做。 - Kuba hasn't forgotten Monica
那是因为你需要更新版本。已知有错误的版本,请尝试从Windows商店下载一个新版本。 - MW_dev

3

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


只有这个工具帮我在IIS上分析编译为发布模式的混合(托管和本机)Web应用程序。 - Monsignor
很遗憾,他们不支持试图评估他们产品的人。 - Lucky Luke
目前他们提供了一个功能受限的14天试用期。 - Max

1
请尝试我的性能分析器,名为cRunWatch。它只有两个文件,因此很容易与您的项目集成,并且只需要添加一行代码即可对代码进行仪器化。

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

需要使用Boost库。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接