我正在寻找探查器以找到我的 C++ 代码中的瓶颈。我想找到一个免费的、非侵入式的、好的分析工具。我是一名游戏开发人员,我在 Xbox 360 上使用 PIX,发现它非常好,但它不是免费的。我知道 Intel VTune,但它也不是免费的。
13 回答
CodeXL现在已经取代 End Of Line'd AMD Code Analyst,两者都是免费的,但不如 VTune 先进。
还有Sleepy,它非常简单,但在很多情况下都能胜任。
注意:上述所有三个工具几年以来都没有维护过。
Very Sleepy是一个适用于 Windows 系统的 C/C++ CPU 分析器(免费)。
Proffy 很酷: http ://pauldoo.com/proffy/
免责声明:我写了这个。
有一个用于 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 性能工具包。
它确实需要 Windows Vista、Windows Server 2008或 Windows 7。
另一个分析器是Shiny。
</p>
我强烈推荐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 ...您不知道自己缺少什么
我使用 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 性能分析社区版。)。)可用。
我使用 VSPerfMon,它是 StandAlone Visual Studio Profiler。我编写了一个 GUI 工具来帮助我运行它并查看结果。
您可以使用 EmbeddedProfiler,它对 Linux 和 Windwos 都是免费的。
探查器是侵入性的(按功能),但它不需要任何代码修改。只需添加一个特定的编译器标志(-finstrument-functios 用于 gcc/MinGW 或 /GH 用于 MSVC)并链接分析器的库。它可以为您提供完整的调用树或只是一个功能列表。它有自己的分析器 GUI。