【发布时间】:2013-04-06 06:12:24
【问题描述】:
有没有办法以编程方式获取 C 程序运行的总时间,以及在特定函数中花费的时间量?我需要在代码中执行此操作,因为我想将这两个值用作另一个函数的参数。由于我在 Linux 上,我可以使用 gprof 或 perf 来执行此操作吗?
【问题讨论】:
-
你做过研究吗?有
times和clock函数等等。
标签: c linux function time profiling
有没有办法以编程方式获取 C 程序运行的总时间,以及在特定函数中花费的时间量?我需要在代码中执行此操作,因为我想将这两个值用作另一个函数的参数。由于我在 Linux 上,我可以使用 gprof 或 perf 来执行此操作吗?
【问题讨论】:
times 和clock 函数等等。
标签: c linux function time profiling
您也可以使用gprof。
【讨论】:
获取程序启动时的系统时间。然后,无论何时,您都可以获得当前时间并减去开始时间。这表明你已经跑了多长时间,以挂钟时间计。
有一个全局布尔 Q,当你的函数进入时设置为 True,当它退出时设置为 False,所以它只有在程序“进入”函数时才为 True(包括)。
将定时器中断设置为每 N 毫秒触发一次,并有两个全局计数器 A 和 B。(N 不必很小。)当定时器中断时,不管它是否递增 B,但只有如果 Q 为真,则增加 A。
这样,您就知道已经过去了多少时间,而 A/B 是您的函数在堆栈上的那部分时间。
顺便说一句:如果函数是递归的,则令 Q 为整数“深度计数器”。否则,没有变化。
【讨论】: