|
|
@ -25,10 +25,10 @@ typedef struct { |
|
|
|
secp256k1_gej gej_x, gej_y; |
|
|
|
unsigned char data[64]; |
|
|
|
int wnaf[256]; |
|
|
|
} bench_inv_t; |
|
|
|
} bench_inv; |
|
|
|
|
|
|
|
void bench_setup(void* arg) { |
|
|
|
bench_inv_t *data = (bench_inv_t*)arg; |
|
|
|
bench_inv *data = (bench_inv*)arg; |
|
|
|
|
|
|
|
static const unsigned char init_x[32] = { |
|
|
|
0x02, 0x03, 0x05, 0x07, 0x0b, 0x0d, 0x11, 0x13, |
|
|
@ -58,7 +58,7 @@ void bench_setup(void* arg) { |
|
|
|
|
|
|
|
void bench_scalar_add(void* arg) { |
|
|
|
int i; |
|
|
|
bench_inv_t *data = (bench_inv_t*)arg; |
|
|
|
bench_inv *data = (bench_inv*)arg; |
|
|
|
|
|
|
|
for (i = 0; i < 2000000; i++) { |
|
|
|
secp256k1_scalar_add(&data->scalar_x, &data->scalar_x, &data->scalar_y); |
|
|
@ -67,7 +67,7 @@ void bench_scalar_add(void* arg) { |
|
|
|
|
|
|
|
void bench_scalar_negate(void* arg) { |
|
|
|
int i; |
|
|
|
bench_inv_t *data = (bench_inv_t*)arg; |
|
|
|
bench_inv *data = (bench_inv*)arg; |
|
|
|
|
|
|
|
for (i = 0; i < 2000000; i++) { |
|
|
|
secp256k1_scalar_negate(&data->scalar_x, &data->scalar_x); |
|
|
@ -76,7 +76,7 @@ void bench_scalar_negate(void* arg) { |
|
|
|
|
|
|
|
void bench_scalar_sqr(void* arg) { |
|
|
|
int i; |
|
|
|
bench_inv_t *data = (bench_inv_t*)arg; |
|
|
|
bench_inv *data = (bench_inv*)arg; |
|
|
|
|
|
|
|
for (i = 0; i < 200000; i++) { |
|
|
|
secp256k1_scalar_sqr(&data->scalar_x, &data->scalar_x); |
|
|
@ -85,7 +85,7 @@ void bench_scalar_sqr(void* arg) { |
|
|
|
|
|
|
|
void bench_scalar_mul(void* arg) { |
|
|
|
int i; |
|
|
|
bench_inv_t *data = (bench_inv_t*)arg; |
|
|
|
bench_inv *data = (bench_inv*)arg; |
|
|
|
|
|
|
|
for (i = 0; i < 200000; i++) { |
|
|
|
secp256k1_scalar_mul(&data->scalar_x, &data->scalar_x, &data->scalar_y); |
|
|
@ -95,7 +95,7 @@ void bench_scalar_mul(void* arg) { |
|
|
|
#ifdef USE_ENDOMORPHISM |
|
|
|
void bench_scalar_split(void* arg) { |
|
|
|
int i; |
|
|
|
bench_inv_t *data = (bench_inv_t*)arg; |
|
|
|
bench_inv *data = (bench_inv*)arg; |
|
|
|
|
|
|
|
for (i = 0; i < 20000; i++) { |
|
|
|
secp256k1_scalar l, r; |
|
|
@ -107,7 +107,7 @@ void bench_scalar_split(void* arg) { |
|
|
|
|
|
|
|
void bench_scalar_inverse(void* arg) { |
|
|
|
int i; |
|
|
|
bench_inv_t *data = (bench_inv_t*)arg; |
|
|
|
bench_inv *data = (bench_inv*)arg; |
|
|
|
|
|
|
|
for (i = 0; i < 2000; i++) { |
|
|
|
secp256k1_scalar_inverse(&data->scalar_x, &data->scalar_x); |
|
|
@ -117,7 +117,7 @@ void bench_scalar_inverse(void* arg) { |
|
|
|
|
|
|
|
void bench_scalar_inverse_var(void* arg) { |
|
|
|
int i; |
|
|
|
bench_inv_t *data = (bench_inv_t*)arg; |
|
|
|
bench_inv *data = (bench_inv*)arg; |
|
|
|
|
|
|
|
for (i = 0; i < 2000; i++) { |
|
|
|
secp256k1_scalar_inverse_var(&data->scalar_x, &data->scalar_x); |
|
|
@ -127,7 +127,7 @@ void bench_scalar_inverse_var(void* arg) { |
|
|
|
|
|
|
|
void bench_field_normalize(void* arg) { |
|
|
|
int i; |
|
|
|
bench_inv_t *data = (bench_inv_t*)arg; |
|
|
|
bench_inv *data = (bench_inv*)arg; |
|
|
|
|
|
|
|
for (i = 0; i < 2000000; i++) { |
|
|
|
secp256k1_fe_normalize(&data->fe_x); |
|
|
@ -136,7 +136,7 @@ void bench_field_normalize(void* arg) { |
|
|
|
|
|
|
|
void bench_field_normalize_weak(void* arg) { |
|
|
|
int i; |
|
|
|
bench_inv_t *data = (bench_inv_t*)arg; |
|
|
|
bench_inv *data = (bench_inv*)arg; |
|
|
|
|
|
|
|
for (i = 0; i < 2000000; i++) { |
|
|
|
secp256k1_fe_normalize_weak(&data->fe_x); |
|
|
@ -145,7 +145,7 @@ void bench_field_normalize_weak(void* arg) { |
|
|
|
|
|
|
|
void bench_field_mul(void* arg) { |
|
|
|
int i; |
|
|
|
bench_inv_t *data = (bench_inv_t*)arg; |
|
|
|
bench_inv *data = (bench_inv*)arg; |
|
|
|
|
|
|
|
for (i = 0; i < 200000; i++) { |
|
|
|
secp256k1_fe_mul(&data->fe_x, &data->fe_x, &data->fe_y); |
|
|
@ -154,7 +154,7 @@ void bench_field_mul(void* arg) { |
|
|
|
|
|
|
|
void bench_field_sqr(void* arg) { |
|
|
|
int i; |
|
|
|
bench_inv_t *data = (bench_inv_t*)arg; |
|
|
|
bench_inv *data = (bench_inv*)arg; |
|
|
|
|
|
|
|
for (i = 0; i < 200000; i++) { |
|
|
|
secp256k1_fe_sqr(&data->fe_x, &data->fe_x); |
|
|
@ -163,7 +163,7 @@ void bench_field_sqr(void* arg) { |
|
|
|
|
|
|
|
void bench_field_inverse(void* arg) { |
|
|
|
int i; |
|
|
|
bench_inv_t *data = (bench_inv_t*)arg; |
|
|
|
bench_inv *data = (bench_inv*)arg; |
|
|
|
|
|
|
|
for (i = 0; i < 20000; i++) { |
|
|
|
secp256k1_fe_inv(&data->fe_x, &data->fe_x); |
|
|
@ -173,7 +173,7 @@ void bench_field_inverse(void* arg) { |
|
|
|
|
|
|
|
void bench_field_inverse_var(void* arg) { |
|
|
|
int i; |
|
|
|
bench_inv_t *data = (bench_inv_t*)arg; |
|
|
|
bench_inv *data = (bench_inv*)arg; |
|
|
|
|
|
|
|
for (i = 0; i < 20000; i++) { |
|
|
|
secp256k1_fe_inv_var(&data->fe_x, &data->fe_x); |
|
|
@ -183,7 +183,7 @@ void bench_field_inverse_var(void* arg) { |
|
|
|
|
|
|
|
void bench_field_sqrt(void* arg) { |
|
|
|
int i; |
|
|
|
bench_inv_t *data = (bench_inv_t*)arg; |
|
|
|
bench_inv *data = (bench_inv*)arg; |
|
|
|
|
|
|
|
for (i = 0; i < 20000; i++) { |
|
|
|
secp256k1_fe_sqrt(&data->fe_x, &data->fe_x); |
|
|
@ -193,7 +193,7 @@ void bench_field_sqrt(void* arg) { |
|
|
|
|
|
|
|
void bench_group_double_var(void* arg) { |
|
|
|
int i; |
|
|
|
bench_inv_t *data = (bench_inv_t*)arg; |
|
|
|
bench_inv *data = (bench_inv*)arg; |
|
|
|
|
|
|
|
for (i = 0; i < 200000; i++) { |
|
|
|
secp256k1_gej_double_var(&data->gej_x, &data->gej_x, NULL); |
|
|
@ -202,7 +202,7 @@ void bench_group_double_var(void* arg) { |
|
|
|
|
|
|
|
void bench_group_add_var(void* arg) { |
|
|
|
int i; |
|
|
|
bench_inv_t *data = (bench_inv_t*)arg; |
|
|
|
bench_inv *data = (bench_inv*)arg; |
|
|
|
|
|
|
|
for (i = 0; i < 200000; i++) { |
|
|
|
secp256k1_gej_add_var(&data->gej_x, &data->gej_x, &data->gej_y, NULL); |
|
|
@ -211,7 +211,7 @@ void bench_group_add_var(void* arg) { |
|
|
|
|
|
|
|
void bench_group_add_affine(void* arg) { |
|
|
|
int i; |
|
|
|
bench_inv_t *data = (bench_inv_t*)arg; |
|
|
|
bench_inv *data = (bench_inv*)arg; |
|
|
|
|
|
|
|
for (i = 0; i < 200000; i++) { |
|
|
|
secp256k1_gej_add_ge(&data->gej_x, &data->gej_x, &data->ge_y); |
|
|
@ -220,7 +220,7 @@ void bench_group_add_affine(void* arg) { |
|
|
|
|
|
|
|
void bench_group_add_affine_var(void* arg) { |
|
|
|
int i; |
|
|
|
bench_inv_t *data = (bench_inv_t*)arg; |
|
|
|
bench_inv *data = (bench_inv*)arg; |
|
|
|
|
|
|
|
for (i = 0; i < 200000; i++) { |
|
|
|
secp256k1_gej_add_ge_var(&data->gej_x, &data->gej_x, &data->ge_y, NULL); |
|
|
@ -229,7 +229,7 @@ void bench_group_add_affine_var(void* arg) { |
|
|
|
|
|
|
|
void bench_group_jacobi_var(void* arg) { |
|
|
|
int i; |
|
|
|
bench_inv_t *data = (bench_inv_t*)arg; |
|
|
|
bench_inv *data = (bench_inv*)arg; |
|
|
|
|
|
|
|
for (i = 0; i < 20000; i++) { |
|
|
|
secp256k1_gej_has_quad_y_var(&data->gej_x); |
|
|
@ -238,7 +238,7 @@ void bench_group_jacobi_var(void* arg) { |
|
|
|
|
|
|
|
void bench_ecmult_wnaf(void* arg) { |
|
|
|
int i; |
|
|
|
bench_inv_t *data = (bench_inv_t*)arg; |
|
|
|
bench_inv *data = (bench_inv*)arg; |
|
|
|
|
|
|
|
for (i = 0; i < 20000; i++) { |
|
|
|
secp256k1_ecmult_wnaf(data->wnaf, 256, &data->scalar_x, WINDOW_A); |
|
|
@ -248,7 +248,7 @@ void bench_ecmult_wnaf(void* arg) { |
|
|
|
|
|
|
|
void bench_wnaf_const(void* arg) { |
|
|
|
int i; |
|
|
|
bench_inv_t *data = (bench_inv_t*)arg; |
|
|
|
bench_inv *data = (bench_inv*)arg; |
|
|
|
|
|
|
|
for (i = 0; i < 20000; i++) { |
|
|
|
secp256k1_wnaf_const(data->wnaf, data->scalar_x, WINDOW_A); |
|
|
@ -259,8 +259,8 @@ void bench_wnaf_const(void* arg) { |
|
|
|
|
|
|
|
void bench_sha256(void* arg) { |
|
|
|
int i; |
|
|
|
bench_inv_t *data = (bench_inv_t*)arg; |
|
|
|
secp256k1_sha256_t sha; |
|
|
|
bench_inv *data = (bench_inv*)arg; |
|
|
|
secp256k1_sha256 sha; |
|
|
|
|
|
|
|
for (i = 0; i < 20000; i++) { |
|
|
|
secp256k1_sha256_initialize(&sha); |
|
|
@ -271,8 +271,8 @@ void bench_sha256(void* arg) { |
|
|
|
|
|
|
|
void bench_hmac_sha256(void* arg) { |
|
|
|
int i; |
|
|
|
bench_inv_t *data = (bench_inv_t*)arg; |
|
|
|
secp256k1_hmac_sha256_t hmac; |
|
|
|
bench_inv *data = (bench_inv*)arg; |
|
|
|
secp256k1_hmac_sha256 hmac; |
|
|
|
|
|
|
|
for (i = 0; i < 20000; i++) { |
|
|
|
secp256k1_hmac_sha256_initialize(&hmac, data->data, 32); |
|
|
@ -283,8 +283,8 @@ void bench_hmac_sha256(void* arg) { |
|
|
|
|
|
|
|
void bench_rfc6979_hmac_sha256(void* arg) { |
|
|
|
int i; |
|
|
|
bench_inv_t *data = (bench_inv_t*)arg; |
|
|
|
secp256k1_rfc6979_hmac_sha256_t rng; |
|
|
|
bench_inv *data = (bench_inv*)arg; |
|
|
|
secp256k1_rfc6979_hmac_sha256 rng; |
|
|
|
|
|
|
|
for (i = 0; i < 20000; i++) { |
|
|
|
secp256k1_rfc6979_hmac_sha256_initialize(&rng, data->data, 64); |
|
|
@ -311,7 +311,7 @@ void bench_context_sign(void* arg) { |
|
|
|
#ifndef USE_NUM_NONE |
|
|
|
void bench_num_jacobi(void* arg) { |
|
|
|
int i; |
|
|
|
bench_inv_t *data = (bench_inv_t*)arg; |
|
|
|
bench_inv *data = (bench_inv*)arg; |
|
|
|
secp256k1_num nx, norder; |
|
|
|
|
|
|
|
secp256k1_scalar_get_num(&nx, &data->scalar_x); |
|
|
@ -340,7 +340,7 @@ int have_flag(int argc, char** argv, char *flag) { |
|
|
|
} |
|
|
|
|
|
|
|
int main(int argc, char **argv) { |
|
|
|
bench_inv_t data; |
|
|
|
bench_inv data; |
|
|
|
if (have_flag(argc, argv, "scalar") || have_flag(argc, argv, "add")) run_benchmark("scalar_add", bench_scalar_add, bench_setup, NULL, &data, 10, 2000000); |
|
|
|
if (have_flag(argc, argv, "scalar") || have_flag(argc, argv, "negate")) run_benchmark("scalar_negate", bench_scalar_negate, bench_setup, NULL, &data, 10, 2000000); |
|
|
|
if (have_flag(argc, argv, "scalar") || have_flag(argc, argv, "sqr")) run_benchmark("scalar_sqr", bench_scalar_sqr, bench_setup, NULL, &data, 10, 200000); |
|
|
|