Add ECDSA benchmarks
This commit is contained in:
parent
78675d9bb0
commit
80fd096b07
@ -19,6 +19,7 @@ bench_bench_dash_SOURCES = \
|
|||||||
bench/bls_dkg.cpp \
|
bench/bls_dkg.cpp \
|
||||||
bench/checkblock.cpp \
|
bench/checkblock.cpp \
|
||||||
bench/checkqueue.cpp \
|
bench/checkqueue.cpp \
|
||||||
|
bench/ecdsa.cpp \
|
||||||
bench/Examples.cpp \
|
bench/Examples.cpp \
|
||||||
bench/rollingbloom.cpp \
|
bench/rollingbloom.cpp \
|
||||||
bench/crypto_hash.cpp \
|
bench/crypto_hash.cpp \
|
||||||
|
@ -17,6 +17,8 @@ int
|
|||||||
main(int argc, char** argv)
|
main(int argc, char** argv)
|
||||||
{
|
{
|
||||||
ECC_Start();
|
ECC_Start();
|
||||||
|
ECCVerifyHandle verifyHandle;
|
||||||
|
|
||||||
BLSInit();
|
BLSInit();
|
||||||
SetupEnvironment();
|
SetupEnvironment();
|
||||||
fPrintToDebugLog = false; // don't want to write to debug.log file
|
fPrintToDebugLog = false; // don't want to write to debug.log file
|
||||||
|
77
src/bench/ecdsa.cpp
Normal file
77
src/bench/ecdsa.cpp
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
// Copyright (c) 2018 The Dash Core developers
|
||||||
|
// Distributed under the MIT software license, see the accompanying
|
||||||
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
|
#include "bench.h"
|
||||||
|
|
||||||
|
#include "key.h"
|
||||||
|
|
||||||
|
static void ECDSASign(benchmark::State& state)
|
||||||
|
{
|
||||||
|
std::vector<CKey> keys;
|
||||||
|
std::vector<uint256> hashes;
|
||||||
|
for (size_t i = 0; i < 100; i++) {
|
||||||
|
CKey k;
|
||||||
|
k.MakeNewKey(false);
|
||||||
|
keys.emplace_back(k);
|
||||||
|
hashes.emplace_back(::SerializeHash((int)i));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Benchmark.
|
||||||
|
size_t i = 0;
|
||||||
|
while (state.KeepRunning()) {
|
||||||
|
std::vector<unsigned char> sig;
|
||||||
|
keys[i].Sign(hashes[i], sig);
|
||||||
|
i = (i + 1) % keys.size();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ECDSAVerify(benchmark::State& state)
|
||||||
|
{
|
||||||
|
std::vector<CPubKey> keys;
|
||||||
|
std::vector<uint256> hashes;
|
||||||
|
std::vector<std::vector<unsigned char>> sigs;
|
||||||
|
for (size_t i = 0; i < 100; i++) {
|
||||||
|
CKey k;
|
||||||
|
k.MakeNewKey(false);
|
||||||
|
keys.emplace_back(k.GetPubKey());
|
||||||
|
hashes.emplace_back(::SerializeHash((int)i));
|
||||||
|
std::vector<unsigned char> sig;
|
||||||
|
k.Sign(hashes[i], sig);
|
||||||
|
sigs.emplace_back(sig);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Benchmark.
|
||||||
|
size_t i = 0;
|
||||||
|
while (state.KeepRunning()) {
|
||||||
|
keys[i].Verify(hashes[i], sigs[i]);
|
||||||
|
i = (i + 1) % keys.size();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ECDSAVerify_LargeBlock(benchmark::State& state)
|
||||||
|
{
|
||||||
|
std::vector<CPubKey> keys;
|
||||||
|
std::vector<uint256> hashes;
|
||||||
|
std::vector<std::vector<unsigned char>> sigs;
|
||||||
|
for (size_t i = 0; i < 1000; i++) {
|
||||||
|
CKey k;
|
||||||
|
k.MakeNewKey(false);
|
||||||
|
keys.emplace_back(k.GetPubKey());
|
||||||
|
hashes.emplace_back(::SerializeHash((int)i));
|
||||||
|
std::vector<unsigned char> sig;
|
||||||
|
k.Sign(hashes[i], sig);
|
||||||
|
sigs.emplace_back(sig);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Benchmark.
|
||||||
|
while (state.KeepRunning()) {
|
||||||
|
for (size_t i = 0; i < keys.size(); i++) {
|
||||||
|
keys[i].Verify(hashes[i], sigs[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
BENCHMARK(ECDSASign)
|
||||||
|
BENCHMARK(ECDSAVerify)
|
||||||
|
BENCHMARK(ECDSAVerify_LargeBlock)
|
Loading…
Reference in New Issue
Block a user