由于测试程序的性能,您必须获得到达ns级别的时间,并共享使用函数来实现Linux用户空间ns级。





在linux系统的运行中,由于需要测试程序性能,所以必须将时间准确地到达ns级。那么具体如何实施呢下面的小编辑器教您如何使用该函数来实现Linux用户空间的ns级,并一起学习。


首先,介绍

当我们测试一个程序的性能时,常常需要得到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;

};

示例代码如下所示:

代码如下:

#包括stdio. h

#包括stdlib。H

#包括时间。H

主(空)

{

结构timespec time_start = { 0, 0 },time_end = { 0, 0 };

clock_gettime(clock_realtime,time_start);

printf(% %;开始时间红豆杉愈伤组织,LLU NStime_start.tv_sec,time_start tv_nsec);

clock_gettime(clock_realtime,time_end);

printf(% % LLU红豆杉愈伤组织;结果,NStime_end.tv_sec,time_end tv_nsec);

printf(% %;时间:红豆杉愈伤组织lluns time_end.tv_sec-time_start.tv_sec,time_end。tv_nsec-time_start tv_nsec);

返回0;

}

编译命令:

代码如下:

GCC测试

运行结果:

代码如下:

测试

开始时间1397395863s,973618673 ns

结果1397395863s,973633297 ns

持续时间:0s 14624ns

可以看到运行结果,调用printf()函数时,需要15us

以上是利用linux功能获得ns级时间的方法。介绍了如果您需要精确的ns时间来测试程序性能,您可以尝试本文介绍的方法。很简单吗