Skip to content

Commit af6abcb

Browse files
committed
Make bench support selecting which benchmarks to run
1 parent 9f56bdf commit af6abcb

File tree

4 files changed

+17
-13
lines changed

4 files changed

+17
-13
lines changed

src/bench.c

+7-6
Original file line numberDiff line numberDiff line change
@@ -88,12 +88,13 @@ static void bench_sign_run(void* arg, int iters) {
8888
# include "modules/schnorrsig/bench_impl.h"
8989
#endif
9090

91-
int main(void) {
91+
int main(int argc, char** argv) {
9292
int i;
9393
secp256k1_pubkey pubkey;
9494
secp256k1_ecdsa_signature sig;
9595
bench_verify_data data;
9696

97+
int d = argc == 1;
9798
int iters = get_iters(20000);
9899

99100
/* ECDSA verification benchmark */
@@ -113,30 +114,30 @@ int main(void) {
113114
CHECK(secp256k1_ec_pubkey_serialize(data.ctx, data.pubkey, &data.pubkeylen, &pubkey, SECP256K1_EC_COMPRESSED) == 1);
114115

115116
print_output_table_header_row();
116-
run_benchmark("ecdsa_verify", bench_verify, NULL, NULL, &data, 10, iters);
117+
if (d || have_flag(argc, argv, "ecdsa") || have_flag(argc, argv, "verify") || have_flag(argc, argv, "ecdsa_verify")) run_benchmark("ecdsa_verify", bench_verify, NULL, NULL, &data, 10, iters);
117118

118119
secp256k1_context_destroy(data.ctx);
119120

120121
/* ECDSA signing benchmark */
121122
data.ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN);
122123

123-
run_benchmark("ecdsa_sign", bench_sign_run, bench_sign_setup, NULL, &data, 10, iters);
124+
if (d || have_flag(argc, argv, "ecdsa") || have_flag(argc, argv, "sign") || have_flag(argc, argv, "ecdsa_sign")) run_benchmark("ecdsa_sign", bench_sign_run, bench_sign_setup, NULL, &data, 10, iters);
124125

125126
secp256k1_context_destroy(data.ctx);
126127

127128
#ifdef ENABLE_MODULE_ECDH
128129
/* ECDH benchmarks */
129-
run_ecdh_bench(iters);
130+
run_ecdh_bench(iters, argc, argv);
130131
#endif
131132

132133
#ifdef ENABLE_MODULE_RECOVERY
133134
/* ECDSA recovery benchmarks */
134-
run_recovery_bench(iters);
135+
run_recovery_bench(iters, argc, argv);
135136
#endif
136137

137138
#ifdef ENABLE_MODULE_SCHNORRSIG
138139
/* Schnorr signature benchmarks */
139-
run_schnorrsig_bench(iters);
140+
run_schnorrsig_bench(iters, argc, argv);
140141
#endif
141142

142143
return 0;

src/modules/ecdh/bench_impl.h

+3-2
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,14 @@ static void bench_ecdh(void* arg, int iters) {
4242
}
4343
}
4444

45-
void run_ecdh_bench(int iters) {
45+
void run_ecdh_bench(int iters, int argc, char** argv) {
4646
bench_ecdh_data data;
47+
int d = argc == 1;
4748

4849
/* create a context with no capabilities */
4950
data.ctx = secp256k1_context_create(SECP256K1_FLAGS_TYPE_CONTEXT);
5051

51-
run_benchmark("ecdh", bench_ecdh, bench_ecdh_setup, NULL, &data, 10, iters);
52+
if (d || have_flag(argc, argv, "ecdh")) run_benchmark("ecdh", bench_ecdh, bench_ecdh_setup, NULL, &data, 10, iters);
5253

5354
secp256k1_context_destroy(data.ctx);
5455
}

src/modules/recovery/bench_impl.h

+3-2
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,13 @@ void bench_recover_setup(void* arg) {
4848
}
4949
}
5050

51-
void run_recovery_bench(int iters) {
51+
void run_recovery_bench(int iters, int argc, char** argv) {
5252
bench_recover_data data;
53+
int d = argc == 1;
5354

5455
data.ctx = secp256k1_context_create(SECP256K1_CONTEXT_VERIFY);
5556

56-
run_benchmark("ecdsa_recover", bench_recover, bench_recover_setup, NULL, &data, 10, iters);
57+
if (d || have_flag(argc, argv, "ecdsa") || have_flag(argc, argv, "recover") || have_flag(argc, argv, "ecdsa_recover")) run_benchmark("ecdsa_recover", bench_recover, bench_recover_setup, NULL, &data, 10, iters);
5758

5859
secp256k1_context_destroy(data.ctx);
5960
}

src/modules/schnorrsig/bench_impl.h

+4-3
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,10 @@ void bench_schnorrsig_verify(void* arg, int iters) {
4545
}
4646
}
4747

48-
void run_schnorrsig_bench(int iters) {
48+
void run_schnorrsig_bench(int iters, int argc, char** argv) {
4949
int i;
5050
bench_schnorrsig_data data;
51+
int d = argc == 1;
5152

5253
data.ctx = secp256k1_context_create(SECP256K1_CONTEXT_VERIFY | SECP256K1_CONTEXT_SIGN);
5354
data.keypairs = (const secp256k1_keypair **)malloc(iters * sizeof(secp256k1_keypair *));
@@ -81,8 +82,8 @@ void run_schnorrsig_bench(int iters) {
8182
CHECK(secp256k1_xonly_pubkey_serialize(data.ctx, pk_char, &pk) == 1);
8283
}
8384

84-
run_benchmark("schnorrsig_sign", bench_schnorrsig_sign, NULL, NULL, (void *) &data, 10, iters);
85-
run_benchmark("schnorrsig_verify", bench_schnorrsig_verify, NULL, NULL, (void *) &data, 10, iters);
85+
if (d || have_flag(argc, argv, "schnorrsig") || have_flag(argc, argv, "sign") || have_flag(argc, argv, "schnorrsig_sign")) run_benchmark("schnorrsig_sign", bench_schnorrsig_sign, NULL, NULL, (void *) &data, 10, iters);
86+
if (d || have_flag(argc, argv, "schnorrsig") || have_flag(argc, argv, "verify") || have_flag(argc, argv, "schnorrsig_verify")) run_benchmark("schnorrsig_verify", bench_schnorrsig_verify, NULL, NULL, (void *) &data, 10, iters);
8687

8788
for (i = 0; i < iters; i++) {
8889
free((void *)data.keypairs[i]);

0 commit comments

Comments
 (0)