From 240578eef5f9ac92235a3f87095e025d04254e2f Mon Sep 17 00:00:00 2001 From: Sebastian Falbesoner Date: Fri, 15 May 2026 00:03:50 +0200 Subject: [PATCH] bench: add internal benchmark for `secp256k1_fe_normalize_var` --- src/bench_internal.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/bench_internal.c b/src/bench_internal.c index f3c1be98..453f3bb3 100644 --- a/src/bench_internal.c +++ b/src/bench_internal.c @@ -194,6 +194,17 @@ static void bench_field_normalize(void* arg, int iters) { } } +static void bench_field_normalize_var(void* arg, int iters) { + int i; + bench_inv *data = (bench_inv*)arg; + + /* Note that this benchmark measures the optimistic path. The worst-case path with the final + reduction is very unlikely to be needed, so this is representative of the common case. */ + for (i = 0; i < iters; i++) { + secp256k1_fe_normalize_var(&data->fe[0]); + } +} + static void bench_field_normalize_weak(void* arg, int iters) { int i; bench_inv *data = (bench_inv*)arg; @@ -421,6 +432,7 @@ int main(int argc, char **argv) { if (d || have_flag(argc, argv, "field") || have_flag(argc, argv, "half")) run_benchmark("field_half", bench_field_half, bench_setup, NULL, &data, 10, iters*100); if (d || have_flag(argc, argv, "field") || have_flag(argc, argv, "normalize")) run_benchmark("field_normalize", bench_field_normalize, bench_setup, NULL, &data, 10, iters*100); + if (d || have_flag(argc, argv, "field") || have_flag(argc, argv, "normalize")) run_benchmark("field_normalize_var", bench_field_normalize_var, bench_setup, NULL, &data, 10, iters*100); if (d || have_flag(argc, argv, "field") || have_flag(argc, argv, "normalize")) run_benchmark("field_normalize_weak", bench_field_normalize_weak, bench_setup, NULL, &data, 10, iters*100); if (d || have_flag(argc, argv, "field") || have_flag(argc, argv, "sqr")) run_benchmark("field_sqr", bench_field_sqr, bench_setup, NULL, &data, 10, iters*10); if (d || have_flag(argc, argv, "field") || have_flag(argc, argv, "mul")) run_benchmark("field_mul", bench_field_mul, bench_setup, NULL, &data, 10, iters*10);