2012-03-03 98 views
2

我需要分析一个用C编写的软件。现在的问题是,虽然gprof或我自己的开始计时器/结束计时器函数调用会为我提供每个函数花费的时间,但我不知道哪一个是最耗时的部分在每个功能中。有些人可能认为它是微型优化,但这就是这个小时的需求!如何剖析代码段?

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

但我想自动化此仪器?

你能告诉我是否有一个好工具可以实现吗?如果我可以从脚本中反复调用已插装的程序,然后找到在代码的每个“部分”中花费的时间的平均值,那将是理想的。目前这个部分是一个松散定义的术语,但是“工具”可以对部分的内容有更具体的定义。

这也将是有益的,如果我能以某种方式了解哪些工具是

+0

我还去了佐治亚理工学院。请告诉你的教授*退出销售gprof; - )* – 2012-03-03 14:02:58

回答

0

我自己并没有使用它,但我听说Valgrind仪器框架(http://www.valgrind.org/)具有使您可以完成所需的细粒度分析的工具。

0

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

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

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

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