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

最佳答案

  • 捕获程序启动时的系统时间。然后,您可以随时获取当前时间并减去开始时间。这表明您已经在墙上时钟中运行了多长时间。
  • 有一个全局 bool(boolean) Q,在输入函数时将其设置为True,而在退出时将其设置为False,因此仅在程序“包含”在函数中时才设置为True。
  • 设置一个定时器中断,每隔N ms触发一次,并且有两个全局计数器A和B。(N不必太小。)当定时器中断时,不管它如何,都使B递增,但如果Q为0,则仅递增A。真正。

  • 这样,您就知道已经花费了多少时间,而A/B是函数在堆栈中的那部分时间。

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

    关于c - 在Linux上以编程方式获取功能的总时间和繁忙时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15993007/

    10-11 23:02
    查看更多