一、clock_gettime()
函数"clock_gettime"是基于Linux C语言的时间函数,他可以用于计算精度和纳秒。
int clock_gettime(clockid_t clock_id, struct timespec *tp)
参数: clk_id : 检索和设置的clk_id指定的时钟时间。 CLOCK_REALTIME:系统实时时间,随系统实时时间改变而改变,即从UTC1970-1-1 0:0:0开始计时, 中间时刻如果系统时间被用户改成其他,则对应的时间相应改变 CLOCK_MONOTONIC:从系统启动这一刻起开始计时,不受系统时间被用户改变的影响 CLOCK_PROCESS_CPUTIME_ID:本进程到当前代码系统CPU花费的时间 CLOCK_THREAD_CPUTIME_ID:本线程到当前代码系统CPU花费的时间 struct timespec { time_t tv_sec; /* 秒*/ long tv_nsec; /* 纳秒*/ }; 注意:这个结构体是系统本身定义好的 ,使用时不用重新定义,直接使用就行。
二、代码测试
// struct timespec
// {
// long tv_sec; /* 秒 */
// long tv_nesc; /* 纳秒 */
// };
int fun(int x,int y)
{
int z;
z= x+y;
printf("z=%d",z);
return 0;
}
int main()
{
float time_s,time_ns,time_ms;
struct timespec ts1,ts2;
clock_gettime(CLOCK_MONOTONIC,&ts1);//记录函数开始时间
fun(3,4);
clock_gettime(CLOCK_MONOTONIC,&ts2);//记录函数结束时间
time_s = ts2.tv_sec - ts1.tv_sec; //得到秒的时间
time_ns = (ts2.tv_nsec - ts1.tv_nsec); //得到纳秒的时间
//由于总的时间=time_s+time_ns
//为了显示方便,将总的时间统一转化为毫秒
time_ms = time_s*1000+time_ns/1000000;
printf("run time is %fms",time_ms);
return 0;
}
运行结果:
|