我需要分析一个用C编写的软件。现在的问题是,虽然gprof或我自己的开始定时器/结束定时器函数调用将为我提供每个函数花费的时间,但我没有关于哪个是每个功能中最耗时的部分。有些人可能称之为微观优化,但这就是时间的需要!
实现这一目标之一是手动"在for循环中放置开始/结束定时器调用(可能有多个这样的循环)。在这种情况下,更聪明的做法是允许使用宏启用/禁用这些调用。
但我想自动化这种仪器吗?
你能否告诉我是否有一个好的工具来实现同样的目标?如果我可以从脚本中重复调用已检测的程序,然后找到每个"部分中花费的平均时间,那将是理想的。的代码。现在部分是一个松散定义的术语,但是"工具"可以对一个部分有更具体的定义。
如果我能以某种方式了解哪些工具
,也会有所帮助答案 0 :(得分:1)
您可以尝试将Callgrind(Valgrind工具之一)与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.