#gcc hello.c -o hello
然后使用time命令统计运行时间:#time ./hello
运行结果:real 0m2.913suser 0m0.012ssys 0m0.508s
- 使用clock()函数这是一个标准C库函数,可以返回程序运行的时钟周期数需要包含<time.h>头文件,并使用CLOCKS_PER_SEC宏来转换为秒数例如,定义两个clock_t变量,分别保存代码测试前后的时刻,最后相减,即可获取代码运行时间例如:#include<stdio.h>#include <time.h> /要包含的头文件/int main(int argc, char argv[]){ / Init / clock_t start, end; printf("time calc test\n"); start = clock(); /记录起始时间/ / 函数进行的一些列操作 / / Final Status / end = clock(); /记录结束时间/ { double seconds = (double)(end - start)/CLOCKS_PER_SEC; fprintf(stderr, "Use time is: %.8f\n", seconds); } return 0;}
运行结果:# time ./helloTesttime calc testUse time is 0.00003100real 0m0.003suser 0m0.000ssys 0m0.000s
- 使用clock_gettime()函数这是一个Linux C语言的时间函数,可以用于计算精度为纳秒的时间需要包含<time.h>头文件,并使用clockid_t类型的参数来指定时钟类型例如,使用CLOCK_REALTIME表示系统实时时间,或者使用CLOCK_PROCESS_CPUTIME_ID表示进程消耗的CPU时间返回值是一个timespec结构体,包含两个成员:tv_sec(秒数)和tv_nsec(纳秒数)例如,定义两个timespec变量,分别保存代码测试前后的时刻,最后相减,即可获取代码运行时间例如:#include <stdio.h>#include <time.h>int main(){ struct timespec start, end; printf("time calc test\n"); clock_gettime(CLOCK_REALTIME, &start); //获取开始时间 / 函数进行的一些列操作 / clock_gettime(CLOCK_REALTIME, &end); //获取结束时间 long long total_time = (end.tv_sec - start.tv_sec) 1000000000 + (end.tv_nsec - start.tv_nsec); //计算纳秒级别的运行时间 printf("total time is %lld ns\n", total_time); total_time /= 1000000; //转换为毫秒级别的运行时间 printf("total time is %lld ms\n", total_time); return 0;}
运行结果:# time ./helloTesttime calc testtotal time is 1059 nstotal time is 0 msreal 0m0.002suser 0m0.001ssys 0m0.001s
以上是Linux下统计C语言程序执行时间的三种常用方法,你可以根据自己的需求和喜好选择合适的方法特别注意:如果你是需要统计某一段代码执行时间,请切记不要在要统计时间的代码段内加额外的打印操作,因为printf是很耗时的一件事,避免它带来的时间影响你的代码段时间统计系列文章持续更新,如果觉得有帮助请点赞+关注(图片来源网络,侵删)
0 评论