app/test: improve accuracy on hash measurements

Cycles per hash calculation were measured per single operation.
It is much more accurate to run several iterations between measurements
and divide by number of iterations.

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
This commit is contained in:
Pablo de Lara 2015-06-10 16:25:19 +01:00 committed by Thomas Monjalon
parent 4de41856c5
commit 4072a35a87

View File

@ -83,21 +83,21 @@ static void
run_hash_func_perf_test(rte_hash_function f, uint32_t init_val,
uint32_t key_len)
{
static uint8_t key[RTE_HASH_KEY_LENGTH_MAX];
uint64_t ticks = 0, start, end;
static uint8_t key[HASHTEST_ITERATIONS][RTE_HASH_KEY_LENGTH_MAX];
uint64_t ticks, start, end;
unsigned i, j;
for (i = 0; i < HASHTEST_ITERATIONS; i++) {
for (j = 0; j < key_len; j++)
key[j] = (uint8_t) rte_rand();
start = rte_rdtsc();
f(key, key_len, init_val);
end = rte_rdtsc();
ticks += end - start;
key[i][j] = (uint8_t) rte_rand();
}
start = rte_rdtsc();
for (i = 0; i < HASHTEST_ITERATIONS; i++)
f(key[i], key_len, init_val);
end = rte_rdtsc();
ticks = end - start;
printf("%-12s, %-18u, %-13u, %.02f\n", get_hash_name(f), (unsigned) key_len,
(unsigned) init_val, (double)ticks / HASHTEST_ITERATIONS);
}