linux下的计时器

最近看排序算法的资料,想测一下各算法的运行时间才发觉没有查过计时器的资料,以前只听说过定时器。

刚开始想到的是alarm信号,然后接收到信号时间量就加1,后来发现这是秒级的精度,根本达不到要求,搜了

一下struct timeval能达到微秒级的计时精度

#include<sys/time.h>
#include<unistd.h>
#include<stdio.h>
int main()  
{           
  struct timeval tv1,tv2;     
  gettimeofday(&tv1,0);
 sleep(2);
  gettimeofday(&tv2,0);
  printf("tv2_sec-tv1_sec; %d ",tv2.tv_sec-tv1.tv_sec);
  printf("tv2_usec-tv1_usec; %d ",tv2.tv_usec-tv1.tv_usec);
double res=(double)(tv2.tv_usec-tv1.tv_usec)/1000000+tv2.tv_sec-tv1.tv_sec;
printf("res=%lf ",res);
  return 0; 
}

  timeval的结构如下:

  strut timeval

  {

  long tv_sec; /* 秒数 */

  long tv_usec; /* 微秒数 */

  };

  上述方法可以进行微妙级别的计时,当然也可以进行毫秒和秒的计时。

效果如图

原文地址:https://www.cnblogs.com/encode/p/3593342.html