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

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

有帮助吗?

解决方案

一种简单的方法是使用'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所建议的那样。

其他提示

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

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

例:


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

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

Gprof 非常易于使用C profiler,它可以帮助您更好地理解性能概念。

time ./a.out

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

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

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

user :用户模式下的时间。

sys :内核模式下的时间

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top