使用valgrind找到最密集的功能?

时间:2011-05-04 03:52:26

标签: c valgrind

我的程序运行速度极慢。有没有办法使用valgrind找出我需要优化的功能? 感谢。

3 个答案:

答案 0 :(得分:4)

您可以将callgrind工具用于valgrind,它应该是每个valgrind发行版的一部分。它在valgrind“虚拟机”中运行程序,并计算在每个函数/代码行中花费的指令数。 可视化结果的最佳UI是kcachegrind(KDE的一部分)。

优点:如果您的瓶颈受CPU限制,它可以很好地工作,因为它完全模拟了应用程序,因此如果CPU指令是您感兴趣的话,可以获得非常准确和详细的结果。如果没有,结果可能会失真。

缺点:它很慢(像valgrind)。如果您的问题是I / O限制,则执行速度慢会使结果失真(相比之下I / O更快)并且还会影响行为。在这种情况下,采样的探查器是更好的方法。

答案 1 :(得分:2)

不,Valgrind是一个动态分析工具,用于充实内存分配错误和线程竞争条件(等等)。

您正在寻找代码分析器,例如Luke Stackwalker。我不知道任何关于* NIX系统的问题,对不起。

答案 2 :(得分:0)

据我所知。 oprofile是您想要的最佳工具。