jemalloc/test/src/timer.c
Kevin Svetlitski f2e00d2fd3 Remove trailing whitespace
Additionally, added a GitHub Action to ensure no more trailing
whitespace will creep in again in the future.

I'm excluding Markdown files from this check, since trailing whitespace
is significant there, and also excluding `build-aux/install-sh` because
there is significant trailing whitespace on the line that sets
`defaultIFS`.
2023-06-23 11:58:18 -07:00

66 lines
1.4 KiB
C

#include "test/jemalloc_test.h"
void
timer_start(timedelta_t *timer) {
nstime_init_update(&timer->t0);
}
void
timer_stop(timedelta_t *timer) {
nstime_copy(&timer->t1, &timer->t0);
nstime_update(&timer->t1);
}
uint64_t
timer_usec(const timedelta_t *timer) {
nstime_t delta;
nstime_copy(&delta, &timer->t1);
nstime_subtract(&delta, &timer->t0);
return nstime_ns(&delta) / 1000;
}
void
timer_ratio(timedelta_t *a, timedelta_t *b, char *buf, size_t buflen) {
uint64_t t0 = timer_usec(a);
uint64_t t1 = timer_usec(b);
uint64_t mult;
size_t i = 0;
size_t j, n;
/*
* The time difference could be 0 if the two clock readings are
* identical, either due to the operations being measured in the middle
* took very little time (or even got optimized away), or the clock
* readings are bad / very coarse grained clock.
* Thus, bump t1 if it is 0 to avoid dividing 0.
*/
if (t1 == 0) {
t1 = 1;
}
/* Whole. */
n = malloc_snprintf(&buf[i], buflen-i, "%"FMTu64, t0 / t1);
i += n;
if (i >= buflen) {
return;
}
mult = 1;
for (j = 0; j < n; j++) {
mult *= 10;
}
/* Decimal. */
n = malloc_snprintf(&buf[i], buflen-i, ".");
i += n;
/* Fraction. */
while (i < buflen-1) {
uint64_t round = (i+1 == buflen-1 && ((t0 * mult * 10 / t1) % 10
>= 5)) ? 1 : 0;
n = malloc_snprintf(&buf[i], buflen-i,
"%"FMTu64, (t0 * mult / t1) % 10 + round);
i += n;
mult *= 10;
}
}