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

时间:2013-01-25 19:02:40

标签: c++ c windows performance profiling

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

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

在寻找探查器时,请在调试器IDE和try this method中运行该程序。

有些程序员依赖它。有一个例子here如何使用它。

在这个例子中,这是发生了什么。发现并删除了一系列问题。

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

  • 剩下的时间,第二次迭代节省了17%。 (加速因子1.2)

  • 剩下的时间,第三次迭代节省了13%。 (加速因子1.15)

  • 剩下的时间,第四次迭代节省了66%。 (加速因子2.95)

  • 剩下的时间,第五次迭代节省了61%。 (加速因子2.59)

  • 剩下的时间,第六次迭代节省了98%。 (加速因子45.9)

所有那些大百分比的变化并不是原始时间的大百分比,但是在其他问题被消除后它们变得如此。 从原始程序节省的总时间超过99.8%。 加速是730次。

大多数没有通过这样的过程的程序都有很多的加速空间,但你不太可能只使用一个分析器来实现它,因为他们所做的就是进行测量。他们并不总是向您指出您需要修复的内容,而您错过的每个问题都会使您无法获得真正显着的加速。

换句话说,最终加速因子是所有这些个别因素的乘积,如果错过任何一个因素,它不仅不存在于产品中,而且还会减少以下因素。 这就是为什么,在性能诊断中,“足够好”还不够好。 你必须找到每个问题。