我是 C/C++ 的新手,并且面临我的程序运行速度非常慢的性能问题。我想找到热点是减少我的代码的整体执行时间。在 Windows 中分析 C/C++ 应用程序的最流行和最简单的方法是什么?使用Mini Proler分析 .NET 应用程序是多么容易,我感到非常惊讶。我们是否有任何类似的 C/C++ 库,可以通过最少的添加代码为我们提供高质量和可靠的结果?或者是否有任何类似于 RedGate ANTS 性能分析器的工具,它还提供有关运行代码的深入信息?
2 回答
Intel 的 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 倍。
大多数没有经历过这样的过程的程序都有很大的加速空间,但你不可能只使用分析器来实现它,因为它们所做的只是进行测量。他们并不总是向您指出您需要解决的问题,并且您错过的每个问题都会使您无法获得真正显着的加速。
换句话说,最终的加速因素是所有这些个体因素的乘积,如果其中任何一个被遗漏,它不仅会从产品中消失,还会减少以下因素。这就是为什么在性能诊断中,“足够好”还不够好。你必须找到每一个问题。