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

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

CodeXL现在已经取代了终结线的AMD代码分析师 ,两者都是免费的,但不像VTune那样先进。 也有困难 ,这很简单,但在许多情况下做的工作。

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

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

免责声明:我写了这个。

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

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

当像Very Sleepy这样的采样分析器的统计近似不充分时,此工具非常有用。

粗略比较显示,它击败AQTime(当它在仪表,功能级运行中被调用时)。 下面的程序(完全优化,内联禁用)运行速度快三倍,micro-profiler显示实时结果,比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()); } 

微软有Windows性能工具包 。

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

一个新的增加是闪亮 。

我强烈推荐Windows性能工具包(WPT)或XPERF

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

使用stacktrace命令行参数已经被证明对于我们公司来说是一个非常宝贵的工具,因为它可以对瓶颈进行配置和故障排除。 最引人注目的事情之一就是WPT可以安装在任何环境下,即使在Windows XP上也是如此。

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

ETW日志中提供的硬数字和统计数据是无与伦比的,除了visual studio(2010/2012),这也是伟大的,但不是免费的AFAIK。

如果你从来没有使用过xperf …你不知道你错过了什么

我使用AQTime,它是我曾经使用过的最好的分析工具之一。 它不是免费的,但你可以得到一个30天的试用,所以如果你打算优化和分析只有一个项目和30天足够你,那么我会建议使用这个应用程序。 ( http://www.automatedqa.com/downloads/aqtime/index.asp

请尝试我的分析器,称为cRunWatch。 这只是两个文件,所以很容易与您的项目集成,并且需要添加一行来完成一段代码。

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

需要Boost库。

我已经使用了“TrueTime – Compuware的DevPartner套件多年的一部分,还有一个[免费版](你可以试试Compuware DevPartner性能分析社区版)。

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

其他有趣的项目是:

  • Proffy
  • Dyninst

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

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

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

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