1

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

4

2 回答 2

4

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

于 2013-01-25T19:14:09.397 回答
2

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

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

在那个例子中,这就是发生的事情。一系列问题被发现并解决。

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

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

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

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

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

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

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

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

换句话说,最终的加速因素是所有这些个体因素的乘积,如果其中任何一个被遗漏,它不仅会从产品中消失,还会减少以下因素。这就是为什么在性能诊断中,“足够好”还不够好。你必须找到每一个问题。

于 2013-01-25T20:04:40.047 回答