timing_deinit(&t);
test_end();
}
+
+ test_begin("timings large");
+ t = timing_init();
+ for (i = 0; i < 10000; i++)
+ timing_add_usecs(t, i);
+ test_assert(timing_get_count(t) == i);
+ test_assert(timing_get_sum(t) == (i-1)*i/2);
+ test_assert(timing_get_min(t) == 0);
+ test_assert(timing_get_max(t) == i-1);
+ test_assert(timing_get_avg(t) == i/2);
+ /* just test that these work: */
+ test_assert(timing_get_median(t) > 0 && timing_get_median(t) < i-1);
+ test_assert(timing_get_95th(t) > 0 && timing_get_95th(t) < i-1);
+ timing_deinit(&t);
+ test_end();
}
{
if (timing->sorted)
return;
- i_qsort(timing->samples, timing->count, sizeof(*timing->samples),
+
+ unsigned int count = (timing->count < TIMING_SUBSAMPLING_BUFFER)
+ ? timing->count
+ : TIMING_SUBSAMPLING_BUFFER;
+ i_qsort(timing->samples, count, sizeof(*timing->samples),
uint64_cmp);
timing->sorted = TRUE;
}