【发布时间】:2009-11-21 17:46:29
【问题描述】:
我想知道一部分代码使用的 CPU 时间。(我知道 linux 中的 time 命令,但这会给我完整程序的运行时间,而不是它的一部分。) 是否有任何功能/命令可以帮助我实现这一目标。
谢谢
【问题讨论】:
-
感谢大家的回复。时钟()看起来不错。 (抱歉没有具体说明。我使用的是 gcc 4.1.3)
我想知道一部分代码使用的 CPU 时间。(我知道 linux 中的 time 命令,但这会给我完整程序的运行时间,而不是它的一部分。) 是否有任何功能/命令可以帮助我实现这一目标。
谢谢
【问题讨论】:
标准 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));
其他语言将具有类似的功能以及用于更高级计时信息的分析器;如果您有特定的目标,请发布更多详细信息。
【讨论】:
当我在 linux 上开发软件时,我使用Callgrind and KCachegrind 来分析我的代码。它可以显示单个方法在程序的总执行时间中花费了多少时间等等。
另一种选择是通过使用一些计时函数(如gettimeofday())包装相关代码来自行检查。
【讨论】:
在 Haskell 中,您可以实现 getCPUtime monad 以获取代码的 main 部分中函数之间的时间差。
【讨论】:
在 C/C++ 中:
http://www.gnu.org/s/libc/manual/html_node/CPU-Time.html
这样在java
P.S:这两个是google的第一批结果。
另外,如果您对测量 CPU 周期而不是 CPU 时间感兴趣, 你可以使用this。
【讨论】: