我怎样才能计算我的C程序?

时间:2009-07-31 01:35:49

标签: c time runtime

我查看了旧帖子,但找不到我的问题的答案:

如何在C程序中计算函数体?

5 个答案:

答案 0 :(得分:13)

一种简单的方法是使用'clock'功能:

#include <time.h>

clock_t start, end;
double cpu_time_used;

start = clock();
... /* Do whatever you want to time */
end = clock();
cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;

或者,如果您使用的是linux,则可以使用'time'命令计算应用执行的时间;这不允许您为特定的代码部分计时,并且包括启动该过程所花费的时间等。

time ./myapp

编辑:这是一个非常基本的“快速计时器”。对于真正的性能分析,你想看看正确的分析器,如Larry Watanabe所建议的那样。

答案 1 :(得分:2)

这取决于您的编译器和操作系统。在Sun工作站上,我曾经使用“prof”或“gprof”。肯定有适用于您的编译器,操作系统和机器的分析工具 - 只需谷歌“C profile yourOS yourcompiler”(替换您的操作系统名称和编译器)

答案 2 :(得分:2)

基本方法是使用clock()函数,这是我们都开始的地方。

例:


clock_t start = clock();
/* Your code */
printf("Time elapsed: %f\n", ((double)clock() - start) / CLOCKS_PER_SEC);

但是,当您开始学习操作系统,硬件,调度程序,多线程等时,您意识到执行时间非常主观。当您想要衡量绩效(这并不一定意味着执行时间)时,您需要更强大的工具。

Gprof是一款非常易于使用的C分析器,可以帮助您更好地理解性能概念。

答案 3 :(得分:2)

time ./a.out

在一个以上运行,输出将是:

real    0m0.017s
user    0m0.017s
sys 0m0.000s

real:程序/命令的总结束时间

user:用户模式下的时间。

sys:在内核模式下花费的时间

答案 4 :(得分:0)

不确定C中的特定函数名称,但通常的做法是在正文开始之前存储一个微秒时间戳,然后在结尾处抓取另一个并减去。