是否有任何好的工具/框架来分析 C/C++ 应用程序的性能



我是 C/C++ 新手,面临着程序运行非常慢的性能问题。我想找到的热点是减少代码的整体执行时间。在 Windows 中分析 C/C++ 应用程序最流行和最简单的方法是什么?我对使用Mini Proler分析.NET应用程序是多么容易感到非常惊讶。我们在 C/C++ 中是否有任何类似的库,以最少的添加代码为我们提供高质量和可靠的结果?或者是否有任何类似于RedGate ANTS性能分析器的工具,也可以提供有关正在运行的代码的有见地的信息?

英特尔的VTune或AMD的CodeAnalyst都是非常好的工具。在Linux上,Perf或OProfile也会做同样的事情。

在寻找探查器时,请在调试器 IDE 中运行该程序并尝试此方法

一些程序员依赖它。这里有一个如何使用它的示例。

在该示例中,将发生以下情况。发现并删除了一系列问题。

  • 第一次迭代节省了 33% 的时间。(加速系数 1.5)

  • 在剩余的时间内,第二次迭代节省了 17%。(加速系数 1.2)

  • 在剩余的时间内,第三次迭代节省了 13%。(加速系数 1.15)

  • 在剩余的时间内,第四次迭代节省了 66%。(加速系数 2.95)

  • 在剩余的时间中,第五次迭代节省了 61%。(加速系数 2.59)

  • 在剩余的时间内,第六次迭代节省了 98%。(加速系数 45.9)

所有这些大百分比的变化都不是原始时间的大百分比,但在消除其他问题后,它们变得如此。从原始计划节省的总时间超过 99.8%。加速比为 730 倍。

大多数没有经过此类过程的程序都有很大的加速空间,但您不太可能仅使用分析器来实现它,因为它们所做的只是进行测量。他们并不总是向您指出您需要解决的问题,并且您错过的每个问题都会阻止您获得真正显着的加速。

换句话说,最终的加速系数是所有这些单独因素的乘积,如果遗漏了其中任何一个因素,它不仅在产品中不存在,而且会减少以下因素。这就是为什么在性能诊断中,"足够好"不够好。你必须找到每一个问题。

最新更新