1*8e33eff8Schristos #include "test/jemalloc_test.h" 2*8e33eff8Schristos 3*8e33eff8Schristos void 4*8e33eff8Schristos timer_start(timedelta_t *timer) { 5*8e33eff8Schristos nstime_init(&timer->t0, 0); 6*8e33eff8Schristos nstime_update(&timer->t0); 7*8e33eff8Schristos } 8*8e33eff8Schristos 9*8e33eff8Schristos void 10*8e33eff8Schristos timer_stop(timedelta_t *timer) { 11*8e33eff8Schristos nstime_copy(&timer->t1, &timer->t0); 12*8e33eff8Schristos nstime_update(&timer->t1); 13*8e33eff8Schristos } 14*8e33eff8Schristos 15*8e33eff8Schristos uint64_t 16*8e33eff8Schristos timer_usec(const timedelta_t *timer) { 17*8e33eff8Schristos nstime_t delta; 18*8e33eff8Schristos 19*8e33eff8Schristos nstime_copy(&delta, &timer->t1); 20*8e33eff8Schristos nstime_subtract(&delta, &timer->t0); 21*8e33eff8Schristos return nstime_ns(&delta) / 1000; 22*8e33eff8Schristos } 23*8e33eff8Schristos 24*8e33eff8Schristos void 25*8e33eff8Schristos timer_ratio(timedelta_t *a, timedelta_t *b, char *buf, size_t buflen) { 26*8e33eff8Schristos uint64_t t0 = timer_usec(a); 27*8e33eff8Schristos uint64_t t1 = timer_usec(b); 28*8e33eff8Schristos uint64_t mult; 29*8e33eff8Schristos size_t i = 0; 30*8e33eff8Schristos size_t j, n; 31*8e33eff8Schristos 32*8e33eff8Schristos /* Whole. */ 33*8e33eff8Schristos n = malloc_snprintf(&buf[i], buflen-i, "%"FMTu64, t0 / t1); 34*8e33eff8Schristos i += n; 35*8e33eff8Schristos if (i >= buflen) { 36*8e33eff8Schristos return; 37*8e33eff8Schristos } 38*8e33eff8Schristos mult = 1; 39*8e33eff8Schristos for (j = 0; j < n; j++) { 40*8e33eff8Schristos mult *= 10; 41*8e33eff8Schristos } 42*8e33eff8Schristos 43*8e33eff8Schristos /* Decimal. */ 44*8e33eff8Schristos n = malloc_snprintf(&buf[i], buflen-i, "."); 45*8e33eff8Schristos i += n; 46*8e33eff8Schristos 47*8e33eff8Schristos /* Fraction. */ 48*8e33eff8Schristos while (i < buflen-1) { 49*8e33eff8Schristos uint64_t round = (i+1 == buflen-1 && ((t0 * mult * 10 / t1) % 10 50*8e33eff8Schristos >= 5)) ? 1 : 0; 51*8e33eff8Schristos n = malloc_snprintf(&buf[i], buflen-i, 52*8e33eff8Schristos "%"FMTu64, (t0 * mult / t1) % 10 + round); 53*8e33eff8Schristos i += n; 54*8e33eff8Schristos mult *= 10; 55*8e33eff8Schristos } 56*8e33eff8Schristos } 57