【问题标题】:How to profiling sections of code?如何分析代码段?
【发布时间】:2012-03-03 01:09:51
【问题描述】:

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

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

但我想自动化这个检测?

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

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

【问题讨论】:

  • 我还去了乔治亚理工学院。请告诉那里的教授停止销售 gprof ;-)

标签: c performance profiling gprof


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      gprof 是一个测量工具。它可以帮助评估替代实现,如the original authors wrote。 他们并没有说它对于定位需要替代实现的代码是有效的,事实上并非如此,尽管几乎每个人都认为它是。

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

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

      【讨论】:

        猜你喜欢
        • 2014-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-05
        • 2016-11-08
        • 1970-01-01
        • 2011-03-03
        • 2012-01-23
        相关资源
        最近更新 更多