/***********************************************************

     timing CPU in C++

     FILE: cputime.h
     tested with gcc and CC
     if used in SYSV you need to add -lbsd in the link stage

************************************************************/

#ifndef CPU_TIME_H_
#define CPU_TIME_H_ %I%

#include <stdio.h>

void report_cpu(char *);
void get_cpu_time(double *usertime, double *systime);

#endif

/***********************************************************
     
      Your program using timer

************************************************************/

#include <sys/types.h>
#include <sys/times.h>
#include <sys/param.h>
#include <iostream.h>
#include "cputime.h"

#ifndef HZ
#define HZ       60.0
#endif

void report_cpu() {
	double utime, stime;
	get_cpu_time(&utime, &stime);
	printf("Total CPU time:\t%2.2fu  %2.2fs\t%2.2f (sec)\n", 
		utime, stime, utime + stime);
}

void get_cpu_time(double *usertime, double *systime) {
	struct tms time;
	times( &time );
	*usertime = (double)time.tms_utime / (double)HZ;
	*systime  = (double)time.tms_stime / (double)HZ;
}

void main() {
	int i;
	for (i=0;i<10000000;i++);
	report_cpu();
}
