C语言中计算函数执行时间的三种方式
这篇文章主要介绍三种计算执行时间的方式。
方式1: time + difftime
使用time.h标准库中的time和difftime函数可以返回记录的两次time_t结构的时间之间的差值,这种方式只能精确到秒级,代码示例如下:
#include <stdio.h> #include <time.h> int fibonacci(int n) { if(n == 0 || n == 1) return 1; return fibonacci(n-1) + fibonacci(n-2); } int main() { int n = 0; while(~scanf("%d",&n)) { time_t start_time=0, end_time=0; time(&start_time); printf("fibonacci(%d)=%d\n",n,fibonacci(n)); time(&end_time); printf("Time Used: %f\n",difftime(end_time,start_time)); } return 0; }
- 执行结果如下
45
fibonacci(45)=1836311903
Time Used: 9.000000
方式2: clock + CLOCKS_PER_SEC
另外利用clock函数代替time函数也能起到相同作用,这种方式通过计算两个clock函数之间的时钟单元来实现,代码示例如下:
#include <stdio.h> #include <time.h> int fibonacci(int n) { if(n == 0 || n == 1) return 1; return fibonacci(n-1) + fibonacci(n-2); } int main() { int n = 0; while(~scanf("%d",&n)) { time_t start_time=0, end_time=0; start_time=clock(); printf("fibonacci(%d)=%d\n",n,fibonacci(n)); end_time=clock(); printf("Time Used: %f\n",(double)(end_time-start_time)/CLOCKS_PER_SEC); } return 0; }
- 执行结果如下
45
fibonacci(45)=1836311903
Time Used: 8.715660
方式3: timeb+ftime
另外利用clock函数代替time函数也能起到相同作用,这种方式通过计算两个clock函数之间的时钟单元来实现,代码示例如下:
#include <stdio.h> #include <sys/timeb.h> #include <string.h> int fibonacci(int n) { if(n == 0 || n == 1) return 1; return fibonacci(n-1) + fibonacci(n-2); } int main() { int n = 0; while(~scanf("%d",&n)) { struct timeb start_time, end_time; memset(&start_time,0,sizeof(struct timeb)); memset(&start_time,0,sizeof(struct timeb)); ftime(&start_time); printf("fibonacci(%d)=%d\n",n,fibonacci(n)); ftime(&end_time); printf("Time Used: %d.%d\n",end_time.time-start_time.time,end_time.millitm-start_time.millitm); } return 0; }
- 执行结果如下
45
fibonacci(45)=1836311903
Time Used: 8.621
总结
到此这篇关于C语言中计算函数执行时间的三种方式的文章就介绍到这了,更多相关C语言计算函数执行时间内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
最新评论