#if 0
/*ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â To the extent possible under law, Justine Tunney has waived      â
â all copyright and related or neighboring rights to this file,    â
â as it is written in the following disclaimers:                   â
â   â¢ http://unlicense.org/                                        â
â   â¢ http://creativecommons.org/publicdomain/zero/1.0/            â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ*/
#endif
#include "libc/calls/struct/timespec.h"
#include "libc/stdio/stdio.h"
#include "libc/time/time.h"

/**
 * @fileoverview clock() function demo
 */

int main(int argc, char *argv[]) {
  unsigned long i;
  volatile unsigned long x;
  struct timespec now, start, next, interval;
  printf("hammering the cpu...\n");
  next = start = timespec_mono();
  interval = timespec_frommillis(500);
  next = timespec_add(next, interval);
  for (;;) {
    for (i = 0;; ++i) {
      x *= 7;
      if (!(i % 256)) {
        now = timespec_mono();
        if (timespec_cmp(now, next) >= 0) {
          break;
        }
      }
    }
    next = timespec_add(next, interval);
    printf("consumed %10g seconds monotonic time and %10g seconds cpu time\n",
           timespec_tonanos(timespec_sub(now, start)) / 1000000000.,
           (double)clock() / CLOCKS_PER_SEC);
  }
}
