以编程方式在Linux上获取函数的总时间和繁忙时间

时间:2013-04-13 21:12:39

标签: c linux function time profiling

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

3 个答案:

答案 0 :(得分:2)

  1. 在程序启动时占用系统时间。然后,只要您需要,您就可以获得当前时间并减去开始时间。这可以告诉你在闹钟时间里跑了多久。

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

    < / LI>
  3. 设置定时器中断每N ms关闭一次,并有两个全局计数器A和B.(N不必小。)当定时器中断时,让它增加B,但是只有如果Q为真,则递增A.

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

    BTW:如果函数是递归的,那么让Q为整数“深度计数器”。否则,没有变化。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

您可以gprof使用相同的内容。