// 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 keys; std::vector 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 sig; keys[i].Sign(hashes[i], sig); i = (i + 1) % keys.size(); } } static void ECDSAVerify(benchmark::State& state) { std::vector keys; std::vector hashes; std::vector> 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 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 keys; std::vector hashes; std::vector> 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 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)