1 #include <ccan/tal/grab_file/grab_file.h>
2 #include <ccan/tal/tal.h>
3 #include <ccan/time/time.h>
4 #include <ccan/crc32c/crc32c.c>
6 #include <ccan/err/err.h>
10 int main(int argc, char *argv[])
13 struct timeabs start, end;
16 bool sw = false, hw = false;
19 if (streq(argv[1], "--software")) {
24 } else if (streq(argv[1], "--hardware")) {
31 if (argc < 2 || (runs = atol(argv[1])) == 0)
32 errx(1, "Usage: bench <num-runs> [<file>]");
34 p = grab_file(NULL, argv[2]);
36 err(1, "Reading %s", argv[2] ? argv[2] : "<stdin>");
37 len = tal_count(p) - 1;
40 for (size_t i = 0; i < runs; i++)
41 sums += crc32c_sw(0, p, len);
43 for (size_t i = 0; i < runs; i++)
44 sums += crc32c_hw(0, p, len);
46 for (size_t i = 0; i < runs; i++)
47 sums += crc32c(0, p, len);
51 assert(sums % runs == 0);
52 printf("%u usec for %zu bytes, sum=%08x\n",
53 (int)time_to_usec(time_divide(time_between(end, start), runs)),
55 (unsigned int)(sums / runs));