我正在寻找一个探查器,以便在我的C ++代码中找到瓶颈。我想找到一个免费的,非侵入式的,良好的性能分析工具。我是一名游戏开发人员,我在Xbox 360上使用PIX,发现它很好,但是它不是免费的。我知道Intel VTune,但它也不免费。
我正在寻找一个探查器,以便在我的C ++代码中找到瓶颈。我想找到一个免费的,非侵入式的,良好的性能分析工具。我是一名游戏开发人员,我在Xbox 360上使用PIX,发现它很好,但是它不是免费的。我知道Intel VTune,但它也不免费。
Answers:
CodeXL现在已经取代了End Of Line的AMD Code Analyst,两者都是免费的,但不如VTune先进。还有Sleepy,它很简单,但是在很多情况下都能完成任务。
Very Sleepy是Windows系统的C / C ++ CPU分析器(免费)。
CppCheck是Windows系统的静态C / C ++ CPU分析器(免费)。
对于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());
}
Microsoft具有Windows Performance Toolkit。
它确实需要Windows Vista,Windows Server 2008或Windows 7。
我强烈建议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 ...您将不知道自己缺少什么
请尝试我的探查器cRunWatch。它只有两个文件,因此很容易与您的项目集成,并且需要精确地添加一行来编写一段代码。
http://ravenspoint.wordpress.com/2010/06/16/timing/
需要Boost库。
我已经使用“ TrueTime-Compuware DevPartner套件的一部分多年了。有一个[免费版本](您可以尝试Compuware DevPartner Performance Analysis社区版。)。
我使用的是VSPerfMon,它是StandAlone Visual Studio Profiler。我写了一个GUI工具来帮助我运行它并查看结果。