Browse Source

Add a siphash benchmark.

Nick Mathewson 10 years ago
parent
commit
e9c1c3ff7f
1 changed files with 25 additions and 0 deletions
  1. 25 0
      src/test/bench.c

+ 25 - 0
src/test/bench.c

@@ -337,6 +337,30 @@ bench_dmap(void)
   smartlist_free(sl2);
 }
 
+static void
+bench_siphash(void)
+{
+  char buf[128];
+  int lens[] = { 7, 8, 15, 16, 20, 32, 111, 128, -1 };
+  int i, j;
+  uint64_t total;
+  uint64_t start, end;
+  const int N = 300000;
+  crypto_rand(buf, sizeof(buf));
+
+  for (i = 0; lens[i] > 0; ++i) {
+    total = 0;
+    reset_perftime();
+    start = perftime();
+    for (j = 0; j < N; ++j) {
+      total += siphash24g(buf, lens[i]);
+    }
+    end = perftime();
+    printf("siphash24g(%d): %.2f ns per call\n",
+           lens[i], NANOCOUNT(start,end,N));
+  }
+}
+
 static void
 bench_cell_ops(void)
 {
@@ -487,6 +511,7 @@ typedef struct benchmark_t {
 
 static struct benchmark_t benchmarks[] = {
   ENT(dmap),
+  ENT(siphash),
   ENT(aes),
   ENT(onion_TAP),
 #ifdef CURVE25519_ENABLED