From 3b4b04c3bbfc78a617dda623b4911eb3d5f8edaf Mon Sep 17 00:00:00 2001
From: Kevin Lyda <kevin@ie.suberic.net>
Date: Thu, 12 Oct 2017 20:02:47 +0100
Subject: [PATCH] Shows timer info.

---
 cube-test.c | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/cube-test.c b/cube-test.c
index 8ede1e7..b394d0f 100644
--- a/cube-test.c
+++ b/cube-test.c
@@ -8,6 +8,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <time.h>
+#include <sys/time.h>
 
 int
 random_two_digit_number() {
@@ -29,16 +30,41 @@ read_number() {
   return atoi(buf);
 }
 
+typedef struct timer_struct {
+  struct timeval then;
+} timer_t;
+
+void
+start_timer(timer_t *timer) {
+  gettimeofday(&timer->then, NULL);
+}
+
+long int
+end_timer(timer_t *timer) {
+  struct timeval now;
+  long int delta;
+
+  gettimeofday(&now, NULL);
+  delta = (now.tv_sec - timer->then.tv_sec) * 1000000;
+  delta += now.tv_usec - timer->then.tv_usec;
+
+  return delta;
+}
+
 int
 main(int argc, char *argv[]) {
   int guess, number;
+  timer_t timer;
+  long int delta;
 
   srand(time(NULL));
 
   while (1) {
     number = random_two_digit_number();
     printf("Number is %d. Cube root (0 to exit)? ", cube(number));
+    start_timer(&timer);
     guess = read_number();
+    delta = end_timer(&timer);
     if (guess == 0) {
       exit(0);
     }
@@ -47,5 +73,12 @@ main(int argc, char *argv[]) {
     } else {
       printf("Not correct. Number was %d.\n", number);
     }
+    if (delta < 1000) {
+      printf("Took %ldus\n", delta);
+    } else if (delta < 1000000) {
+      printf("Took %.1fms\n", delta / 1000.0);
+    } else {
+      printf("Took %.2fs\n", delta / 1000000.0);
+    }
   }
 }
-- 
GitLab