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

有帮助吗?

解决方案

代码XL 现在已经取代了 End Of Line'd AMD 代码分析师 两者都是免费的,但不如 VTune 先进。还有 , ,这很简单,但在很多情况下都能完成工作。

其他提示

很困 是适用于 Windows 系统的 C/C++ CPU 分析器(免费)。
程序检查 是适用于 Windows 系统的静态 C/C++ CPU 分析器(免费)。

普菲很酷: http://pauldoo.com/profy/

免责声明:我写了这个。

有一个适用于 MS VC 7.1 及更高版本的仪器(功能精确)分析器,称为 MicroProfiler。 你可以在这里获取它(x64) 或者 这里(x86). 。它 不需要任何修改或添加 到您的代码,并且能够显示调用者和被调用者的函数统计信息 即时的 无需关闭应用程序/停止分析过程。

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

当像 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());
}

微软有 Windows 性能工具包.

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

一个新的补充是 闪亮的.

​​​​​

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

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

使用 stacktrace 命令行争论 事实证明,它对我的​​公司来说是一个非常宝贵的工具,因为它可以分析和解决瓶颈问题。最引人注目的事情之一是 WPT 可以安装在任何环境中,甚至可以安装在古老的计算机上。 视窗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 库。

我用了 卢克·斯塔克沃克 它完成了我的 Visual Studio 项目的工作。

其他有趣的项目有:

我多年来一直使用“TrueTime——Compuware DevPartner 套件的一部分。有一个[免费版本](您可以尝试 Compuware DevPartner Performance Analysis Community Edition。)。

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top