Linux下怎样利用函数获得ns级工夫

相关游戏 相关文章 发表评论字体大小:【 | |

作者:佚名 2019-12-31 来源:本站整理    浏览:7     评论:0 条

  正在停止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级工夫的话,能够尝尝原文引见的要领,是否是很简略呢?

这些是你想要的吗?

相关游戏

网友评论

评论需审核后才能显示