我查看了旧帖子,但找不到我的问题的答案:
如何在C程序中计算函数体?
答案 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中的特定函数名称,但通常的做法是在正文开始之前存储一个微秒时间戳,然后在结尾处抓取另一个并减去。