[dpdk-dev] [PATCH v5 02/10] test/hash: improve accuracy on cycle measurements

Pablo de Lara pablo.de.lara.guarch at intel.com
Fri May 22 12:16:03 CEST 2015


From: De Lara Guarch, Pablo <pablo.de.lara.guarch at intel.com>

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 at intel.com>
---
 app/test/test_hash_functions.c |   18 +++++++++---------
 1 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/app/test/test_hash_functions.c b/app/test/test_hash_functions.c
index 4efb3cd..767b2bc 100644
--- a/app/test/test_hash_functions.c
+++ b/app/test/test_hash_functions.c
@@ -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);
 }
-- 
1.7.4.1



More information about the dev mailing list