Added timer for bests solutions
This commit is contained in:
62
timer.c
Normal file
62
timer.c
Normal file
@@ -0,0 +1,62 @@
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
|
||||
#define NANOSEC 1000000000.0
|
||||
#define MILLISEC 1000
|
||||
|
||||
static struct timespec start;
|
||||
|
||||
void start_timer()
|
||||
{
|
||||
printf("timer started...\n");
|
||||
clock_gettime(CLOCK_MONOTONIC, &start);
|
||||
# ifdef DEBUG_TIMER
|
||||
printf("sec=%d nsec=%d\n", start.tv_sec, start.tv_nsec);
|
||||
# endif
|
||||
}
|
||||
|
||||
void set_timer(timer)
|
||||
struct timespec *timer;
|
||||
{
|
||||
clock_gettime(CLOCK_MONOTONIC, timer);
|
||||
# ifdef DEBUG_TIMER
|
||||
printf("timer: sec=%d nsec=%d orig: sec=%d nsec=%d\n",
|
||||
timer->tv_sec, timer->tv_nsec, start.tv_sec, start.tv_nsec);
|
||||
# endif
|
||||
}
|
||||
|
||||
double get_timer(timer)
|
||||
struct timespec timer;
|
||||
{
|
||||
double diff;
|
||||
diff=(timer.tv_sec - start.tv_sec) + (timer.tv_nsec - start.tv_nsec) / NANOSEC;
|
||||
# ifdef DEBUG_TIMER
|
||||
printf("timer sec: %.5f\n", diff);
|
||||
# endif
|
||||
return diff;
|
||||
}
|
||||
|
||||
#ifdef STANDALONE
|
||||
main(ac, av)
|
||||
int ac;
|
||||
char **av;
|
||||
{
|
||||
int delay;
|
||||
struct timespec end, tsdelay;
|
||||
|
||||
if (ac != 2) {
|
||||
fprintf(stderr, "usage: %s msecs\n", *av);
|
||||
exit (1);
|
||||
}
|
||||
delay=atoi(*(av+1));
|
||||
start_timer();
|
||||
tsdelay.tv_sec=delay/MILLISEC;
|
||||
tsdelay.tv_nsec=delay%MILLISEC;
|
||||
printf("delay %d=%d:%d\n", delay, tsdelay.tv_sec, tsdelay.tv_nsec);
|
||||
nanosleep(&tsdelay, NULL);
|
||||
set_timer(&end);
|
||||
printf("Time elapsed: %.5f seconds\n", get_timer(end));
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
Reference in New Issue
Block a user