有没有办法以编程方式获取 C 程序运行的总时间,以及在特定函数中花费的时间量?我需要在代码中执行此操作,因为我想将这两个值用作另一个函数的参数。由于我在 Linux 上,我可以使用 gprof 或 perf 来执行此操作吗?
问问题
217 次
3 回答
2
获取程序启动时的系统时间。然后,无论何时,您都可以获得当前时间并减去开始时间。这告诉你已经跑了多长时间,在挂钟时间。
有一个全局布尔 Q,当你的函数进入时设置为 True,当它退出时设置为 False,所以它只有在程序“进入”函数时才为 True(包括)。
设置一个定时器中断,每 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 回答