

#include <stdio.h>
#include <sys/time.h>
#include <sys/resource.h>

typedef struct timeval TimeVal, *TimeValPtr; 
/* timeval is a struct with fields tv_sec for seconds and 
                                   tv_usec for microseconds */

int GetTime (TimeValPtr pTime)
{
  struct rusage usage;
  int status;

  if ((status=getrusage(0,&usage))!=0) 
    return (status);  /* return error code */

  *pTime=usage.ru_utime; /* user time */

  return (status);
}

long GetTimeDifference (TimeValPtr pStart, TimeValPtr pStop)
{
  long usec, sec;

  sec=pStop->tv_sec-pStart->tv_sec;    /* difference in seconds */
  usec=pStop->tv_usec-pStart->tv_usec; /* difference in microseconds */

   
  return ( sec*1e6 +  usec); /* result in microseconds */
}

int main()
{
  TimeVal startt, endt;
  long tottime;
  int reps;

  GetTime(&startt);
  for (reps=0; reps < 2000000; reps++)
    ;
  GetTime(&endt);
  tottime=GetTimeDifference(&startt, &endt);
  printf("Total time = %ld\n", tottime);
}


