]> git.ozlabs.org Git - ccan/commitdiff
crypto/sha256: add benchmark.
authorRusty Russell <rusty@rustcorp.com.au>
Thu, 25 Jun 2015 05:58:52 +0000 (15:28 +0930)
committerRusty Russell <rusty@rustcorp.com.au>
Thu, 25 Jun 2015 07:48:28 +0000 (17:18 +0930)
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
ccan/crypto/sha256/benchmarks/Makefile [new file with mode: 0644]
ccan/crypto/sha256/benchmarks/double-sha-bench.c [new file with mode: 0644]

diff --git a/ccan/crypto/sha256/benchmarks/Makefile b/ccan/crypto/sha256/benchmarks/Makefile
new file mode 100644 (file)
index 0000000..9621962
--- /dev/null
@@ -0,0 +1,10 @@
+CCANDIR := ../../../../
+CFLAGS := -Wall -I$(CCANDIR) -O3 -flto
+LDFLAGS := -O3 -flto
+
+double-sha-bench: double-sha-bench.o ccan-time.o ccan-crypto-sha256.o
+
+ccan-crypto-sha256.o: $(CCANDIR)/ccan/crypto/sha256/sha256.c
+       $(CC) $(CFLAGS) -c -o $@ $<
+ccan-time.o: $(CCANDIR)/ccan/time/time.c
+       $(CC) $(CFLAGS) -c -o $@ $<
diff --git a/ccan/crypto/sha256/benchmarks/double-sha-bench.c b/ccan/crypto/sha256/benchmarks/double-sha-bench.c
new file mode 100644 (file)
index 0000000..93fd9d3
--- /dev/null
@@ -0,0 +1,23 @@
+/* Bitcoin does a lot of SHA of SHA.  Benchmark that. */
+#include <ccan/crypto/sha256/sha256.h>
+#include <ccan/time/time.h>
+#include <stdio.h>
+
+int main(int argc, char *argv[])
+{
+       struct timeabs start;
+       struct timerel diff;
+       size_t i, n;
+       struct sha256 h;
+
+       n = atoi(argv[1] ? argv[1] : "1000000");
+       sha256(&h, &n, sizeof(n));
+       start = time_now();
+       for (i = 0; i < n; i++)
+               sha256(&h, &h, sizeof(h));
+       diff = time_divide(time_between(time_now(), start), n);
+       printf("Hashing time for %02x%02x%02x%02x%02x%02x... is %llu nsec\n",
+              h.u.u8[0], h.u.u8[1], h.u.u8[2], h.u.u8[3], h.u.u8[4], h.u.u8[5],
+              (unsigned long long)time_to_nsec(diff));
+       return 0;
+}