2013-04-10 71 views
1

对于C代码特定的程序,我想衡量:测量Ç执行时间,内存占用和CPU负载为一个程序

execution time (most likely complete program execution time) 
memory usage 
CPU load 

我怎样才能得到所有上述信息用C?

+1

哪个平台? – guitarflow 2013-04-10 14:35:13

+0

答案可能会因环境而异。例如,您可能会添加一个表示感兴趣的操作系统的标签(例如,windows,linux,osx等) – 2013-04-10 14:35:38

+0

如果是基于UNIX系统的命令行工具,则可以使用'time'来执行时间测量。在C中,我个人使用gettimeofday()在代码块之前和之后。 – guitarflow 2013-04-10 14:37:12

回答

0

可以编写一个简单的代码使用标准C库时间/日期操作(time.h中)来测量一个特定的代码块的执行时间:http://en.wikipedia.org/wiki/C_date_and_time_functions

内存使用实际上是不可能精确地测量用于一个非平凡的程序。你的程序是否使用共享库?那么,您是否将共享库使用的内存计算为专属于您的程序?怎么样你的程序fork()编辑的子进程?你是将它们分开还是与主流程一起计数?所有这些问题都可以回答,但这意味着您所衡量的内容取决于您的具体选择。

在C中,你可以做的是围绕malloc()和free()使用你的包装来跟踪你的内存分配。

对于CPU负载,您需要与OS进行接口。您无法从C.中获得该信息。

相关问题