2022-09-06 04:43:49 +00:00
|
|
|
#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
|
2023-06-18 07:55:09 +00:00
|
|
|
#include "libc/calls/calls.h"
|
2022-09-06 04:43:49 +00:00
|
|
|
#include "libc/calls/struct/timespec.h"
|
2023-06-10 01:02:06 +00:00
|
|
|
#include "libc/runtime/runtime.h"
|
2022-09-06 04:43:49 +00:00
|
|
|
#include "libc/stdio/stdio.h"
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @fileoverview clock() function demo
|
|
|
|
*/
|
|
|
|
|
|
|
|
int main(int argc, char *argv[]) {
|
2023-06-06 06:35:31 +00:00
|
|
|
ShowCrashReports();
|
2022-09-06 04:43:49 +00:00
|
|
|
unsigned long i;
|
|
|
|
volatile unsigned long x;
|
|
|
|
struct timespec now, start, next, interval;
|
|
|
|
printf("hammering the cpu...\n");
|
2022-11-06 02:49:41 +00:00
|
|
|
next = start = timespec_mono();
|
|
|
|
interval = timespec_frommillis(500);
|
|
|
|
next = timespec_add(next, interval);
|
2022-09-06 04:43:49 +00:00
|
|
|
for (;;) {
|
|
|
|
for (i = 0;; ++i) {
|
|
|
|
x *= 7;
|
|
|
|
if (!(i % 256)) {
|
2022-11-06 02:49:41 +00:00
|
|
|
now = timespec_mono();
|
|
|
|
if (timespec_cmp(now, next) >= 0) {
|
2022-09-06 04:43:49 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2022-11-06 02:49:41 +00:00
|
|
|
next = timespec_add(next, interval);
|
2022-09-06 04:43:49 +00:00
|
|
|
printf("consumed %10g seconds monotonic time and %10g seconds cpu time\n",
|
2022-11-06 02:49:41 +00:00
|
|
|
timespec_tonanos(timespec_sub(now, start)) / 1000000000.,
|
2022-09-06 04:43:49 +00:00
|
|
|
(double)clock() / CLOCKS_PER_SEC);
|
|
|
|
}
|
|
|
|
}
|