mirror of
https://github.com/jemalloc/jemalloc.git
synced 2026-04-15 07:01:42 +03:00
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`.
66 lines
1.4 KiB
C
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;
|
|
}
|
|
}
|