2

有没有办法以编程方式获取 C 程序运行的总时间,以及在特定函数中花费的时间量?我需要在代码中执行此操作,因为我想将这两个值用作另一个函数的参数。由于我在 Linux 上,我可以使用 gprof 或 perf 来执行此操作吗?

4

3 回答 3

2
  1. 获取程序启动时的系统时间。然后,无论何时,您都可以获得当前时间并减去开始时间。这告诉你已经跑了多长时间,在挂钟时间。

  2. 有一个全局布尔 Q,当你的函数进入时设置为 True,当它退出时设置为 False,所以它只有在程序“进入”函数时才为 True(包括)。

  3. 设置一个定时器中断,每 N ms 关闭一次,并有两个全局计数器,A 和 B。(N 不必很小。)当定时器中断时,不管它增加 B,但只有在 Q 为真时才增加 A .

这样,您就知道已经过去了多少时间,而 A/B 是您的函数在堆栈上的时间的一部分。

顺便说一句:如果函数是递归的,让 Q 是一个整数“深度计数器”。否则,没有变化。

于 2013-04-13T21:52:27.130 回答
1

您也可以使用gprof

于 2013-04-13T21:35:48.217 回答
1

是的,您可以使用gprof,但这需要重新编译您要测量的二进制文件以插入所需的监控代码。默认情况下,程序不会花时间记录这些数据,因此您必须添加它。使用 gcc,这是使用-pg选项完成的。

于 2013-04-13T21:22:50.237 回答