正在停止Linux体系操做的时分,果为测试步伐机能的须要,必需将取得的工夫准确到ns级,这么详细要若何真现呢?上面小编便学您若何运用函数真现Linux用户空间ns级工夫的获与,一同去教习高吧。
1、弁言
咱们正在测试步伐的机能的时分往往须要取得ns级的准确工夫来掂量一个步伐的机能,上面引见高linux顶用户空间取得ns级工夫的要领
2、用户空间取得ns级工夫
运用clock_gettime函数,函数本型以下:
long sys_clock_gettime (clockid_t which_clock, struct 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构造
代码以下:
struct timespec
{
time_t tv_sec;
long int tv_nsec;
};
运用类型代码以下:
代码以下:
#include《stdio.h》
#include《stdlib.h》
#include《time.h》
int main(void)
{
struct timespec time_start={0, 0},time_end={0, 0};
clock_gettime(CLOCK_REALTIME, &time_start);
printf(“start time %llus,%llu ns\n”, time_start.tv_sec, time_start.tv_nsec);
clock_gettime(CLOCK_REALTIME, &time_end);
printf(“endtime %llus,%llu ns\n”, time_end.tv_sec, time_end.tv_nsec);
printf(“duration:%llus %lluns\n”, time_end.tv_sec-time_start.tv_sec, time_end.tv_nsec-time_start.tv_nsec);
return 0;
}
编译号令:
代码以下:
gcc test.c -o test -lrt
运转成果:
代码以下:
。/test
start time 1397395863s,973618673 ns
endtime 1397395863s,973633297 ns
duration:0s 14624ns
从运转成果能够看没 挪用printf()函数一次须要15us摆布
下面便是Linux高运用函数取得ns级工夫的要领引见了,若是您正在测试步伐机能须要准确到ns级工夫的话,能够尝尝原文引见的要领,是否是很简略呢?
相关文章