From 1b2e1a6d2b82f82918f2831fa974db1a4a8f3707 Mon Sep 17 00:00:00 2001 From: Jonas Nick Date: Wed, 7 Apr 2021 21:06:59 +0000 Subject: [PATCH] for benchmarks only: use 128 bit randomizer This is just a commit for benchmarks and should be improved if 128 bit randomizers are to be actually used. 1) it does not follow bip-schnorr batch verification 2) the randomizers are not uniformly distributed in [0, 2^128-1] for no reason 3) chacha output is thrown away --- doc/speedup-batch/bench_output.txt | 134 ++++++++++++------------- doc/speedup-batch/bench_output.txt.log | 2 +- doc/speedup-batch/speedup-batch.png | Bin 10303 -> 10359 bytes src/modules/schnorrsig/main_impl.h | 2 + 4 files changed, 70 insertions(+), 68 deletions(-) diff --git a/doc/speedup-batch/bench_output.txt b/doc/speedup-batch/bench_output.txt index c6ae4ec90e..e9608ba641 100644 --- a/doc/speedup-batch/bench_output.txt +++ b/doc/speedup-batch/bench_output.txt @@ -1,67 +1,67 @@ -schnorrsig_sign: min 24.4us / avg 24.5us / max 24.5us -schnorrsig_verify: min 41.9us / avg 42.1us / max 42.2us -schnorrsig_batch_verify_1: min 50.2us / avg 50.2us / max 50.3us -schnorrsig_batch_verify_2: min 44.7us / avg 44.8us / max 44.8us -schnorrsig_batch_verify_3: min 42.8us / avg 42.8us / max 42.9us -schnorrsig_batch_verify_4: min 41.8us / avg 41.9us / max 41.9us -schnorrsig_batch_verify_5: min 41.2us / avg 41.3us / max 41.3us -schnorrsig_batch_verify_7: min 40.5us / avg 40.6us / max 40.6us -schnorrsig_batch_verify_9: min 40.1us / avg 40.2us / max 40.2us -schnorrsig_batch_verify_11: min 39.9us / avg 39.9us / max 39.9us -schnorrsig_batch_verify_14: min 39.7us / avg 39.7us / max 39.7us -schnorrsig_batch_verify_17: min 39.5us / avg 39.5us / max 39.5us -schnorrsig_batch_verify_21: min 39.3us / avg 39.3us / max 39.4us -schnorrsig_batch_verify_26: min 39.3us / avg 39.3us / max 39.3us -schnorrsig_batch_verify_32: min 39.1us / avg 39.2us / max 39.2us -schnorrsig_batch_verify_39: min 39.1us / avg 39.1us / max 39.1us -schnorrsig_batch_verify_47: min 38.2us / avg 38.3us / max 38.3us -schnorrsig_batch_verify_57: min 37.2us / avg 37.2us / max 37.2us -schnorrsig_batch_verify_69: min 36.3us / avg 36.3us / max 36.4us -schnorrsig_batch_verify_83: min 35.2us / avg 35.3us / max 35.3us -schnorrsig_batch_verify_100: min 34.2us / avg 34.2us / max 34.3us -schnorrsig_batch_verify_121: min 33.9us / avg 33.9us / max 33.9us -schnorrsig_batch_verify_146: min 32.7us / avg 32.7us / max 32.8us -schnorrsig_batch_verify_176: min 31.7us / avg 31.8us / max 31.8us -schnorrsig_batch_verify_212: min 31.0us / avg 31.0us / max 31.0us -schnorrsig_batch_verify_255: min 30.3us / avg 30.3us / max 30.3us -schnorrsig_batch_verify_307: min 29.7us / avg 29.8us / max 29.8us -schnorrsig_batch_verify_369: min 29.3us / avg 29.3us / max 29.3us -schnorrsig_batch_verify_443: min 28.8us / avg 28.8us / max 28.8us -schnorrsig_batch_verify_532: min 28.5us / avg 28.6us / max 28.6us -schnorrsig_batch_verify_639: min 28.3us / avg 28.3us / max 28.4us -schnorrsig_batch_verify_767: min 27.7us / avg 27.7us / max 27.7us -schnorrsig_batch_verify_921: min 27.0us / avg 27.0us / max 27.0us -schnorrsig_batch_verify_1106: min 26.5us / avg 26.6us / max 26.6us -schnorrsig_batch_verify_1328: min 26.1us / avg 26.2us / max 26.2us -schnorrsig_batch_verify_1594: min 25.9us / avg 25.9us / max 25.9us -schnorrsig_batch_verify_1913: min 25.6us / avg 25.6us / max 25.6us -schnorrsig_batch_verify_2296: min 25.3us / avg 25.3us / max 25.4us -schnorrsig_batch_verify_2756: min 25.0us / avg 25.0us / max 25.1us -schnorrsig_batch_verify_3308: min 24.7us / avg 24.7us / max 24.7us -schnorrsig_batch_verify_3970: min 24.6us / avg 24.6us / max 24.6us -schnorrsig_batch_verify_4765: min 24.3us / avg 24.3us / max 24.3us -schnorrsig_batch_verify_5719: min 23.9us / avg 24.0us / max 24.0us -schnorrsig_batch_verify_6863: min 23.7us / avg 23.7us / max 23.8us -schnorrsig_batch_verify_8236: min 23.5us / avg 23.5us / max 23.5us -schnorrsig_batch_verify_9884: min 23.2us / avg 23.2us / max 23.2us -schnorrsig_batch_verify_11861: min 22.9us / avg 23.0us / max 23.0us -schnorrsig_batch_verify_14234: min 22.7us / avg 22.7us / max 22.8us -schnorrsig_batch_verify_17081: min 22.6us / avg 22.6us / max 22.7us -schnorrsig_batch_verify_20498: min 22.4us / avg 22.4us / max 22.5us -schnorrsig_batch_verify_24598: min 22.3us / avg 22.3us / max 22.3us -schnorrsig_batch_verify_29518: min 22.2us / avg 22.2us / max 22.2us -schnorrsig_batch_verify_35422: min 22.1us / avg 22.1us / max 22.1us -schnorrsig_batch_verify_42507: min 22.1us / avg 22.1us / max 22.1us -schnorrsig_batch_verify_51009: min 22.0us / avg 22.1us / max 22.1us -schnorrsig_batch_verify_61211: min 22.0us / avg 22.0us / max 22.0us -schnorrsig_batch_verify_73454: min 21.9us / avg 21.9us / max 21.9us -schnorrsig_batch_verify_88145: min 21.9us / avg 21.9us / max 22.0us -schnorrsig_batch_verify_105775: min 21.9us / avg 21.9us / max 21.9us -schnorrsig_batch_verify_126931: min 21.9us / avg 21.9us / max 21.9us -schnorrsig_batch_verify_152318: min 21.8us / avg 21.8us / max 21.8us -schnorrsig_batch_verify_182782: min 21.7us / avg 21.8us / max 21.8us -schnorrsig_batch_verify_219339: min 21.8us / avg 21.8us / max 21.8us -schnorrsig_batch_verify_263207: min 21.7us / avg 21.8us / max 21.8us -schnorrsig_batch_verify_315849: min 21.8us / avg 21.8us / max 21.9us -schnorrsig_batch_verify_379019: min 21.7us / avg 21.8us / max 21.9us -schnorrsig_batch_verify_454823: min 21.8us / avg 21.8us / max 21.9us +schnorrsig_sign: min 24.5us / avg 24.6us / max 24.6us +schnorrsig_verify: min 42.1us / avg 42.1us / max 42.2us +schnorrsig_batch_verify_1: min 50.2us / avg 50.3us / max 50.3us +schnorrsig_batch_verify_2: min 43.5us / avg 43.5us / max 43.5us +schnorrsig_batch_verify_3: min 41.1us / avg 41.1us / max 41.1us +schnorrsig_batch_verify_4: min 40.0us / avg 40.0us / max 40.0us +schnorrsig_batch_verify_5: min 39.2us / avg 39.2us / max 39.3us +schnorrsig_batch_verify_7: min 38.4us / avg 38.5us / max 38.5us +schnorrsig_batch_verify_9: min 38.0us / avg 38.0us / max 38.0us +schnorrsig_batch_verify_11: min 37.7us / avg 37.7us / max 37.8us +schnorrsig_batch_verify_14: min 37.4us / avg 37.4us / max 37.5us +schnorrsig_batch_verify_17: min 37.3us / avg 37.3us / max 37.3us +schnorrsig_batch_verify_21: min 37.1us / avg 37.1us / max 37.2us +schnorrsig_batch_verify_26: min 37.0us / avg 37.0us / max 37.0us +schnorrsig_batch_verify_32: min 37.0us / avg 37.0us / max 37.0us +schnorrsig_batch_verify_39: min 36.9us / avg 36.9us / max 36.9us +schnorrsig_batch_verify_47: min 35.2us / avg 35.3us / max 35.3us +schnorrsig_batch_verify_57: min 34.2us / avg 34.2us / max 34.2us +schnorrsig_batch_verify_69: min 33.8us / avg 33.8us / max 33.9us +schnorrsig_batch_verify_83: min 32.6us / avg 32.6us / max 32.7us +schnorrsig_batch_verify_100: min 31.7us / avg 31.7us / max 31.7us +schnorrsig_batch_verify_121: min 31.6us / avg 31.6us / max 31.6us +schnorrsig_batch_verify_146: min 30.5us / avg 30.5us / max 30.5us +schnorrsig_batch_verify_176: min 29.5us / avg 29.5us / max 29.5us +schnorrsig_batch_verify_212: min 28.7us / avg 28.7us / max 28.7us +schnorrsig_batch_verify_255: min 28.0us / avg 28.0us / max 28.0us +schnorrsig_batch_verify_307: min 27.5us / avg 27.5us / max 27.5us +schnorrsig_batch_verify_369: min 27.0us / avg 27.0us / max 27.0us +schnorrsig_batch_verify_443: min 26.6us / avg 26.7us / max 26.7us +schnorrsig_batch_verify_532: min 26.3us / avg 26.3us / max 26.4us +schnorrsig_batch_verify_639: min 26.5us / avg 26.5us / max 26.5us +schnorrsig_batch_verify_767: min 25.8us / avg 25.8us / max 25.8us +schnorrsig_batch_verify_921: min 25.2us / avg 25.2us / max 25.2us +schnorrsig_batch_verify_1106: min 24.7us / avg 24.7us / max 24.7us +schnorrsig_batch_verify_1328: min 24.3us / avg 24.3us / max 24.3us +schnorrsig_batch_verify_1594: min 24.0us / avg 24.0us / max 24.1us +schnorrsig_batch_verify_1913: min 23.7us / avg 23.7us / max 23.8us +schnorrsig_batch_verify_2296: min 23.7us / avg 23.7us / max 23.7us +schnorrsig_batch_verify_2756: min 23.3us / avg 23.3us / max 23.3us +schnorrsig_batch_verify_3308: min 22.9us / avg 23.0us / max 23.0us +schnorrsig_batch_verify_3970: min 23.0us / avg 23.0us / max 23.0us +schnorrsig_batch_verify_4765: min 22.7us / avg 22.7us / max 22.7us +schnorrsig_batch_verify_5719: min 22.3us / avg 22.4us / max 22.4us +schnorrsig_batch_verify_6863: min 22.1us / avg 22.1us / max 22.1us +schnorrsig_batch_verify_8236: min 22.0us / avg 22.0us / max 22.0us +schnorrsig_batch_verify_9884: min 21.7us / avg 21.7us / max 21.7us +schnorrsig_batch_verify_11861: min 21.4us / avg 21.5us / max 21.5us +schnorrsig_batch_verify_14234: min 21.2us / avg 21.2us / max 21.3us +schnorrsig_batch_verify_17081: min 21.1us / avg 21.1us / max 21.1us +schnorrsig_batch_verify_20498: min 20.9us / avg 21.0us / max 21.0us +schnorrsig_batch_verify_24598: min 20.8us / avg 20.9us / max 20.9us +schnorrsig_batch_verify_29518: min 20.7us / avg 20.7us / max 20.8us +schnorrsig_batch_verify_35422: min 20.7us / avg 20.7us / max 20.7us +schnorrsig_batch_verify_42507: min 20.6us / avg 20.6us / max 20.6us +schnorrsig_batch_verify_51009: min 20.5us / avg 20.5us / max 20.6us +schnorrsig_batch_verify_61211: min 20.5us / avg 20.5us / max 20.5us +schnorrsig_batch_verify_73454: min 20.4us / avg 20.4us / max 20.4us +schnorrsig_batch_verify_88145: min 20.4us / avg 20.4us / max 20.4us +schnorrsig_batch_verify_105775: min 20.4us / avg 20.4us / max 20.4us +schnorrsig_batch_verify_126931: min 20.3us / avg 20.4us / max 20.4us +schnorrsig_batch_verify_152318: min 20.3us / avg 20.3us / max 20.3us +schnorrsig_batch_verify_182782: min 20.3us / avg 20.3us / max 20.3us +schnorrsig_batch_verify_219339: min 20.3us / avg 20.3us / max 20.4us +schnorrsig_batch_verify_263207: min 20.3us / avg 20.3us / max 20.4us +schnorrsig_batch_verify_315849: min 20.3us / avg 20.3us / max 20.3us +schnorrsig_batch_verify_379019: min 20.3us / avg 20.3us / max 20.4us +schnorrsig_batch_verify_454823: min 20.3us / avg 20.3us / max 20.4us diff --git a/doc/speedup-batch/bench_output.txt.log b/doc/speedup-batch/bench_output.txt.log index 90161b908a..02b974b5cc 100644 --- a/doc/speedup-batch/bench_output.txt.log +++ b/doc/speedup-batch/bench_output.txt.log @@ -1,4 +1,4 @@ -HEAD: 0b631c69 +HEAD: 1e850ba7 checking build system type... x86_64-pc-linux-gnu checking host system type... x86_64-pc-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c diff --git a/doc/speedup-batch/speedup-batch.png b/doc/speedup-batch/speedup-batch.png index 7f2b76bbfe1ff1854b0ed89b08d75ffddfbe6a9e..488111b6db8583e9bf5fca84607d9233f338c3a9 100644 GIT binary patch literal 10359 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[0], &ecmult_context->randomizer_cache[1], ecmult_context->chacha_seed, idx / 4); + secp256k1_scalar_split_128(&ecmult_context->randomizer_cache[0], &ecmult_context->randomizer_cache[1], &ecmult_context->randomizer_cache[1]); } /* R */ @@ -367,6 +368,7 @@ static int secp256k1_schnorrsig_verify_batch_sum_s(secp256k1_scalar *s, unsigned secp256k1_scalar term; if (i % 2 == 1) { secp256k1_scalar_chacha20(&randomizer_cache[0], &randomizer_cache[1], chacha_seed, i / 2); + secp256k1_scalar_split_128(&randomizer_cache[0], &randomizer_cache[1], &randomizer_cache[1]); } secp256k1_scalar_set_b32(&term, &sig[i][32], &overflow);