【问题标题】:CPU running time of a portion of code部分代码的CPU运行时间
【发布时间】:2009-11-21 17:46:29
【问题描述】:

我想知道一部分代码使用的 CPU 时间。(我知道 linux 中的 time 命令,但这会给我完整程序的运行时间,而不是它的一部分。) 是否有任何功能/命令可以帮助我实现这一目标。

谢谢

【问题讨论】:

  • 感谢大家的回复。时钟()看起来不错。 (抱歉没有具体说明。我使用的是 gcc 4.1.3)

标签: c time cpu


【解决方案1】:

标准 C 库中的 clock() 函数给出了自进程启动以来使用的 CPU 时间量,因此您可以比较“之前”和“之后”的值来获取使用的时间:

#include <time.h>
#include <stdio.h>

...

clock_t t0, t1;

t0 = clock();
// do computation
t1 = clock();

printf("Computation took %dms\n", (int)((t1-t0) * 1000 / CLOCKS_PER_SEC));

其他语言将具有类似的功能以及用于更高级计时信息的分析器;如果您有特定的目标,请发布更多详细信息。

【讨论】:

    【解决方案2】:

    当我在 linux 上开发软件时,我使用Callgrind and KCachegrind 来分析我的代码。它可以显示单个方法在程序的总执行时间中花费了多少时间等等。

    另一种选择是通过使用一些计时函数(如gettimeofday())包装相关代码来自行检查。

    【讨论】:

    • gettimeofday() 给出了挂钟时间,而我需要 CPU 时间。我会试试你推荐的分析软件谢谢。
    • 是的,你是对的。正如我所说,我对 Linux 的东西有点生疏了 :) 不过,我仍然建议在你的开发过程中使用 Callgrind。
    【解决方案3】:

    在 Haskell 中,您可以实现 getCPUtime monad 以获取代码的 main 部分中函数之间的时间差。

    【讨论】:

      【解决方案4】:

      在 C/C++ 中:
      http://www.gnu.org/s/libc/manual/html_node/CPU-Time.html
      这样在java

      P.S:这两个是google的第一批结果。

      另外,如果您对测量 CPU 周期而不是 CPU 时间感兴趣, 你可以使用this

      【讨论】:

      • 我猜我使用了错误的搜索查询。无论如何谢谢:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-22
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多