使用Linux系统调用
该调用获取从1970年1月1号到现在经过的时间和时区(UTC时间), 可以参考Linux手册
(精度最高)
#include <stdio.h>#include <sys/time.h>int main(int argc, char *argv[]){struct timeval start_time, end_time;double timeuse;gettimeofday(&start_time, NULL); // 开始时间/* 中间这里写要测试的函数 */printf("测试时间\n");gettimeofday(&end_time, NULL); // 结束时间timeuse = (start_time.tv_sec - end_time.tv_sec) +(double)(start_time.tv_usec - end_time.tv_usec) / 1000000.0;printf("%lf\n", timeuse);return 0;}
gettimeofday()
时区一般不用了, 直接传入NULL
就可以了
使用C库函数(自己用的就是这种)
本意是想测试一下 写的程序的时间复杂度,但是样本太小,根本没用
C库函数,所需头文件ctime/time.h,该函数可以跨平台使用.
返回类型为clock_t 实际为long
.clock() 函数,返回从 开启这个程序进程 到 程序中调用clock()函数 时之间的CPU时钟计时单元(clock tick)数(挂钟时间),返回单位是毫秒可以用常量CLOCKS_PER_SEC, 这个常量表示每一秒(per second)有多少个时钟计时单元
#include <stdio.h>#include <time.h>int main(int argc, char **argv) {clock_t start_time, end_time; start_time = clock(); // 开始时间/* 这里写要测试的函数 */end_time = clock(); // 结束时间/* 计算得出程序运行时间, 并将其输出到屏幕 */printf("%lf ", (double)(end_time - start_time) / CLOCKS_PER_SEC);return 0;}
自己写了个测试用例 ...
0.000s 反正留个纪念
#include <stdio.h>#include <time.h>#define max 5void find(int a[],int n){for(int i=0;i<max;i++){for(int j=i+1;j<max;j++){if(a[i]+a[j]==n){printf("%d %d = %d\n",a[i],a[j],n);}}}}int main(){int n;int a[max]={1,2,3,4,5};scanf("%d",&n);clock_t start_time,end_time;start_time=clock();find(a,n);end_time=clock();printf("used time : %lfs\n",(double)(end_time-start_time)/CLOCKS_PER_SEC);return 0;}