最近看排序算法的资料,想测一下各算法的运行时间才发觉没有查过计时器的资料,以前只听说过定时器。
刚开始想到的是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\n",tv2.tv_sec-tv1.tv_sec);
printf("tv2_usec-tv1_usec;
%d\n",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\n",res);
return 0;
}
timeval的结构如下:
strut timeval
{
long tv_sec;
/* 秒数 */
long tv_usec; /* 微秒数
*/
};
上述方法可以进行微妙级别的计时,当然也可以进行毫秒和秒的计时。
效果如图

linux下的计时器,布布扣,bubuko.com
linux下的计时器
原文:http://www.cnblogs.com/encode/p/3593342.html