Linux下统计C语言程序执行时间的方式有以下几种:
-使用time命令。这是最简单的方式,只须要在执行文件前加上time,还会显示程序运行的时间,包括real(实际时间),user(用户态时间)和sys(内核态时间)。诸如,编译一个hello.c文件:
#gcc hello.c -o hello
之后使用time命令统计运行时间:
#time ./hello
运行结果:
real 0m2.913s
user 0m0.012s
sys 0m0.508s
-使用clock()函数。这是一个标准C库函数,可以返回程序运行的时钟周期数。须要包含头文件,并使用CLOCKS_PER_SEC宏来转换为秒数。诸如,定义两个clock_t变量,分别保存代码测试前后的时刻,最后相乘linux运行c程序,即可获取代码运行时间。诸如:
#include
#include /*要包含的头文件*/
int main(int argc, char *argv[])
{
/* Init */
clock_t start, end;
printf("time calc testn");
start = clock(); /*记录起始时间*/
/*
*
* 函数进行的一些列操作
*
*/
/* Final Status */
end = clock(); /*记录结束时间*/
{
double seconds = (double)(end - start)/CLOCKS_PER_SEC;
fprintf(stderr, "Use time is: %.8fn", seconds);
}
return 0;
}
运行结果:
# time ./helloTest
time calc test
Use time is 0.00003100
real 0m0.003s
user 0m0.000s
sys 0m0.000s
-使用clock_gettime()函数。这是一个LinuxC语言的时间函数,可以用于估算精度为毫秒的时间。须要包含头文件,并使用clockid_t类型的参数来指定时钟类型。比如linux系统教程,使用CLOCK_REALTIME表示系统实时时间,或则使用CLOCK_PROCESS_CPUTIME_ID表示进程消耗的CPU时间。返回值是一个timespec结构体,包含两个成员:tv_sec(秒数)和tv_nsec(毫秒数)。诸如suse linux 下载,定义两个timespec变量,分别保存代码测试前后的时刻linux运行c程序,最后相乘,即可获取代码运行时间。诸如:
#include
#include
int main()
{
struct timespec start, end;
printf("time calc testn");
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 nsn", total_time);
total_time /= 1000000; //转换为毫秒级别的运行时间
printf("total time is %lld msn", total_time);
return 0;
}
运行结果:
# time ./helloTest
time calc test
total time is 1059 ns
total time is 0 ms
real 0m0.002s
user 0m0.001s
sys 0m0.001s
以上是Linux下统计C语言程序执行时间的三种常用方式,你可以依照自己的需求和喜好选择合适的技巧。
非常注意:
假如你是须要统计某一段代码执行时间,请谨记不要在要统计时间的代码段内加额外的复印操作,由于printf是很历时的一件事,防止它带来的时间影响你的代码段时间统计。
系列文章持续更新,假如认为有帮助请点赞+关注!