2009-11-21 81 views
1

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

感谢

+3

哪种语言? – 2009-11-21 17:56:12

+0

谢谢大家的回复。 clock()看起来不错。 (对不起,不具体,我使用gcc 4.1.3) – 2009-11-21 18:33:20

回答

4

在标准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)); 

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

0

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

另一种选择是通过用gettimeofday()等一些定时功能封装相关代码来自行检查。

+0

gettimeofday()给出了挂钟时间,而我需要CPU时间。 我会尝试你建议的剖析软件 谢谢。 – 2009-11-21 18:39:16

+0

是的,你说得对。正如我所说的,我在Linux上有点生疏:)我仍然建议使用Callgrind作为开发过程的一部分。 – 2009-11-22 18:44:55

0

在Haskell,你可以实现的getCPUtime单子拿到代码的main部分功能之间的时间差。