以ns纳秒为例的linux用户空间
首先,介绍
当我们测试一个程序的性能时,常常需要得到ns级的精确时间来测量程序的性能。介绍了linux下用户空间中ns级时间的获取方法。
两。用户空间中ns级时间的存取
使用clock_gettime函数,函数原型如下:
长sys_clock_gettime(clockid_t which_clock,结构timespec * TP);
1.which_clock参数解释
对clock_realtime实时:系统实时变化而变化。也就是说,从utc1970-1-1 0:0:0。在中间时间,如果系统时间是其他用户,相应的时间将相应地发生变化。
clock_monotonic:开始的那一刻起,系统启动的时间,而不是由系统时间的变化由用户受影响。
在clock_process_cputime_id时间:目前编码系统的CPU进程
clock_thread_cputime_id:花在这个线程的当前代码系统CPU时间
2.struct timespec结构
复制代码代码如下所示:
结构timespec
{
time_t tv_sec;
长整型tv_nsec;
};
示例代码如下所示:
复制代码代码如下所示:
#包括
#包括
#包括
主(空)
{
结构timespec time_start = { 0, 0 },time_end = { 0, 0 };
clock_gettime(clock_realtime,time_start);
printf(开始时间% % LLU红豆杉愈伤组织,NS
clock_gettime(clock_realtime,time_end);
printf(结果% % LLU红豆杉愈伤组织,NS
printf(时间:% % lluns 红豆杉愈伤组织
返回0;
}
编译命令:
复制代码代码如下所示:
GCC测试
运行结果:
复制代码代码如下所示:
测试
开始时间1397395863s,973618673 ns
结果1397395863s,973633297 ns
持续时间:0s 14624ns
可以看到运行结果,调用printf()函数时,需要15us。