如何分析代码部分?

时间:2012-03-03 01:09:52

标签: c performance profiling gprof

我需要分析一个用C编写的软件。现在的问题是,虽然gprof或我自己的开始定时器/结束定时器函数调用将为我提供每个函数花费的时间,但我没有关于哪个是每个功能中最耗时的部分。有些人可能称之为微观优化,但这就是时间的需要!

实现这一目标之一是手动"在for循环中放置开始/结束定时器调用(可能有多个这样的循环)。在这种情况下,更聪明的做法是允许使用宏启用/禁用这些调用。

但我想自动化这种仪器吗?

你能否告诉我是否有一个好的工具来实现同样的目标?如果我可以从脚本中重复调用已检测的程序,然后找到每个"部分中花费的平均时间,那将是理想的。的代码。现在部分是一个松散定义的术语,但是"工具"可以对一个部分有更具体的定义。

如果我能以某种方式了解哪些工具

,也会有所帮助

3 个答案:

答案 0 :(得分:1)

您可以尝试将CallgrindValgrind工具之一)与KCachegrind结合使用。另请参阅this question

答案 1 :(得分:0)

我自己没有使用它,但我听说Valgrind仪器框架(http://www.valgrind.org/)有一些工具可以实现您想要完成的非常细粒度的分析。

答案 2 :(得分:0)

您希望代码尽可能快地运行,对吗?

gprof是一种测量工具。它可以帮助评估替代实现,如the original authors wrote。 他们并没有说找到需要替代实现的代码是有效的,但事实并非如此,即使几乎每个人都认为它是。

谬误在于测量位置,但如果你想在房间里找到一头大象,你需要测量它才能知道它在那里吗? 不,你睁开眼睛。

Here's a way to open your eyes to what your program is doing.