This combines bench_verify, bench_sign, bench_ecdh, bench_recovery, and bench_schnorrsig into a single bench binary.
I don't think there is a good reason to have this many binaries, and it complicates build config and CI.
This combines bench_verify, bench_sign, bench_ecdh, bench_recovery, and bench_schnorrsig into a single bench binary.
I don't think there is a good reason to have this many binaries, and it complicates build config and CI.
I don't think there is a good reason to have this many binaries, and it complicates build config and CI.
One possible drawback is that if you want to run a really high iteration of tests (e.g., taking a minute of sig verify), then it's somewhat annoying if your test is late in the list. Of course you can edit the source files but it's not great either.
@real-or-random How about adding a way to select which benchmark(s) to run using keywords, like bench_intern has?
That's the optimal solution of course. I thought it's a little bit more work but indeed, we have the code already in the bench_internal! So Concept ACK for that idea.
needs rebase
Rebased, and added the ability to select on the command line which benchmarks to run.
ACK af6abcb3d0097a7f7892fb8b54a4c6363e5c2c7f diff looks good, command line options work, valgrind is happy
tACK af6abcb, the command-line options work as expected on my ubuntu machine. The diff looks good.
you can find my command-line output here.
These are the few things that I observed: (not sure if we need to change them)
./bench and ./bench ecdsa runs all benchmark. (since the have_flag("edcsa") is present on both verify and sign benchmarks.)Maybe I'm misunderstating your observations but I can't confirm.
1. Both `./bench` and `./bench ecdsa` runs all benchmark. (_since the `have_flag("edcsa")` is present on both verify and sign benchmarks._)
Indeed but you can also specify ./bench ecdsa_verify or ./bench ecdsa_sign.
2. If a module is enabled (let's say schnorrsig), the benchmark of that module cannot be run separately like we do for sign and verify.
You can also specify ./bench schnorrsig_verify or ./bench schnorrsig_sign.
You can also specify
./bench schnorrsig_verifyor./bench schnorrsig_sign.
Ohh.. I didn't review the src/modules/schnorrsig/bench_impl.h properly. This works. Thanks!
Indeed but you can also specify
./bench ecdsa_verifyor./bench ecdsa_sign.
Yes, I thought both the ./bench and ./bench ecdsa were equivalent. Now, I see that I was wrong. If we have a module enabled they act differently.
Everything looks good!
Concept ACK, played around with this a bit and it works as one would expect
A follow-up PR could add a --help which would also mention the get_iters environment variable (I have to look up in the source how it's called exactly every time).