#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <time.h>

static struct timespec time0,time1;

static double seconds()
{
  double td;
  long tn;
  clock_gettime(CLOCK_MONOTONIC, &time1);
  tn=time1.tv_nsec - time0.tv_nsec;
  td=time1.tv_sec - time0.tv_sec;
  if(tn<0)
  {
    tn += 1000000000L;
    td -= 1.0;
  }
  td += ((double)tn)*1e-9;
  return(td);
}

#define COUNT 100000
void main()
{
  double dsecs,secs,lastsecs,dmin,dmax,sum;
  int i;
  clock_gettime(CLOCK_MONOTONIC, &time0);
  lastsecs=seconds();
  dmin=10000.0;
  dmax=-dmin;
  for(i=0;i<COUNT;i++)
  {
    usleep(1000-92);
    secs=seconds();
    dsecs=secs-lastsecs;
    lastsecs=secs;
    if(dsecs<dmin)dmin=dsecs;
    if(dsecs>dmax)dmax=dsecs;
    sum+=dsecs;
//  printf("%.8f\n",dsecs);
  }
  sum /= (double) COUNT;
  printf("dmin: %.8f\n",dmin);
  printf("dmax: %.8f\n",dmax);
  printf("aver: %.8f\n",sum);
}


