Linux系统下精确到微秒级的时间操作函数

2008-04-21 10:35:42  作者

Linux下对时间进行运算,假如是到秒级的,相信大家都用过time之类的函数实现了,但要更精确些呢?到毫秒、微秒级呢?

看看下面这段源代码就明白了

#include %26lt;sys/time.h%26gt;

#include %26lt;stdio.h%26gt;

#include %26lt;math.h%26gt;



void function()/*用来耗用一定的时间而已,无实际用处的函数*/

{

  unsigned int i,j;

  double y;

  for(i=0;i%26lt;10000;i++)

    for(j=0;j%26lt;10000;j++)

      y=sin((double)i);

}



int main(int argc, char ** argv)

{

  struct timeval tpstart,tpend;

  float timeuse;



  gettimeofday(%26amp;tpstart,NULL);

  function();

  gettimeofday(%26amp;tpend,NULL);

  timeuse=1000000*(tpend.tv_sec-tpstart.tv_sec)+tpend.tv_usec-tpstart.tv_usec;

  timeuse/=1000000;

  printf("Used Time:%f\n",timeuse);

  exit(0);

}

主要是用到了gettimeofday函数,函数里用到了这个结构

struct timeval {

               long tv_sec;        /* seconds */

               long tv_usec;  /* microseconds */

       };