18
18
#include "secp256k1.c"
19
19
20
20
#define POINTS 32768
21
+ #ifndef ITERS
21
22
#define ITERS 10000
23
+ #endif
22
24
23
25
typedef struct {
24
26
/* Setup once in advance */
@@ -55,13 +57,13 @@ static int bench_callback(secp256k1_scalar* sc, secp256k1_ge* ge, size_t idx, vo
55
57
return 1 ;
56
58
}
57
59
58
- static void bench_ecmult (void * arg ) {
60
+ static void bench_ecmult (void * arg , int iters ) {
59
61
bench_data * data = (bench_data * )arg ;
60
62
61
- size_t count = data -> count ;
62
63
int includes_g = data -> includes_g ;
63
- size_t iters = 1 + ITERS / count ;
64
- size_t iter ;
64
+ int iter ;
65
+ int count = data -> count ;
66
+ iters = iters / data -> count ;
65
67
66
68
for (iter = 0 ; iter < iters ; ++ iter ) {
67
69
data -> ecmult_multi (& data -> ctx -> error_callback , & data -> ctx -> ecmult_ctx , data -> scratch , & data -> output [iter ], data -> includes_g ? & data -> scalars [data -> offset1 ] : NULL , bench_callback , arg , count - includes_g );
@@ -76,10 +78,10 @@ static void bench_ecmult_setup(void* arg) {
76
78
data -> offset2 = (data -> count * 0x7f6f537b + 0x6a1a8f49 ) % POINTS ;
77
79
}
78
80
79
- static void bench_ecmult_teardown (void * arg ) {
81
+ static void bench_ecmult_teardown (void * arg , int iters ) {
80
82
bench_data * data = (bench_data * )arg ;
81
- size_t iters = 1 + ITERS / data -> count ;
82
- size_t iter ;
83
+ int iter ;
84
+ iters = iters / data -> count ;
83
85
/* Verify the results in teardown, to avoid doing comparisons while benchmarking. */
84
86
for (iter = 0 ; iter < iters ; ++ iter ) {
85
87
secp256k1_gej tmp ;
@@ -188,11 +190,14 @@ int main(int argc, char **argv) {
188
190
run_test (& data , i , 1 );
189
191
}
190
192
191
- for (p = 0 ; p <= 11 ; ++ p ) {
192
- for (i = 9 ; i <= 16 ; ++ i ) {
193
- run_test (& data , i << p , 1 );
193
+ if (ITERS > 1 ) {
194
+ for (p = 0 ; p <= 11 ; ++ p ) {
195
+ for (i = 9 ; i <= 16 ; ++ i ) {
196
+ run_test (& data , i << p , 1 );
197
+ }
194
198
}
195
199
}
200
+
196
201
if (data .scratch != NULL ) {
197
202
secp256k1_scratch_space_destroy (data .ctx , data .scratch );
198
203
}
0 commit comments