1

我正在使用 gprof 分析 netbsd 上的用户态应用程序,并看到 clock_gettime 使用了 30% 以上的周期。Gprof 没有显示从哪里调用它(它显示了一些显然不调用clock_getttime 的函数)。该应用程序使用第三方代码,包括 libevent 1.4(似乎使用 clock_gettime)。我考虑从中删除呼叫,但无法确定太多。

  1. 我不明白为什么要花这么多时间。任何输入将不胜感激。我还看到 gettimeofday 需要很多周期。一般来说,为什么要获得时间涉及这么多的处理周期
  2. 有没有一种方法可以优化 clock_gettime () 或者我们可以使用任何其他调用?
  3. gcc 是否有可能在使用 -pg 进行编译时将此调用添加到代码中以进行分析?感谢您的任何回答
4

1 回答 1

1

这一切都与您的程序正在执行的任何其他操作有关,请记住,如果您正在执行任何 I/O,您的程序使用的实际 CPU 时间可能很小,并且gprof看不到其他任何内容。因此,如果一些对计时例程的调用被卡在那里,并且它们被频繁调用,那么它们肯定会显示出很高的百分比。

为什么不gprof显示他们从哪里被调用?对于使用 -pg 编译的例程,当输入任何例程时,它会尝试找出调用者是谁。它会尝试,但这并不意味着它会成功。反正就是这样gprof

于 2013-07-22T14:39:05.713 回答