2

我需要分析一个用 C 编写的软件。现在的问题是,虽然 gprof 或我自己的开始计时器/结束计时器函数调用会为我提供每个函数花费的时间,但我不知道哪个是最耗时的每个功能中的一部分。有些人可能将其称为微优化,但这正是当下的需要!

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

但我想自动化这个仪器?

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

如果我能以某种方式了解哪些工具将是有用的,那也会很有帮助

4

3 回答 3

1

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

于 2012-03-03T01:24:34.640 回答
0

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

于 2012-03-03T01:29:49.260 回答
0

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

gprof 是一个测量工具。正如原作者所写,它可以帮助评估替代实现。他们并没有说它对于定位需要替代实现的代码是有效的,而且它不是,尽管几乎每个人都认为它是有效的。

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

这是一种让您了解程序正在做什么的方法。

于 2012-03-03T13:42:05.393 回答