From 0df017889b4f61860092e1d54e271092cce55f62 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Wed, 27 Sep 2017 17:36:56 -0700 Subject: Benchmark Merkle root computation --- src/Makefile.bench.include | 1 + src/bench/merkle_root.cpp | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 src/bench/merkle_root.cpp diff --git a/src/Makefile.bench.include b/src/Makefile.bench.include index 3306dcf598..32de1582f8 100644 --- a/src/Makefile.bench.include +++ b/src/Makefile.bench.include @@ -21,6 +21,7 @@ bench_bench_bitcoin_SOURCES = \ bench/rollingbloom.cpp \ bench/crypto_hash.cpp \ bench/ccoins_caching.cpp \ + bench/merkle_root.cpp \ bench/mempool_eviction.cpp \ bench/verify_script.cpp \ bench/base58.cpp \ diff --git a/src/bench/merkle_root.cpp b/src/bench/merkle_root.cpp new file mode 100644 index 0000000000..027b19125d --- /dev/null +++ b/src/bench/merkle_root.cpp @@ -0,0 +1,26 @@ +// Copyright (c) 2016 The Bitcoin 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 "uint256.h" +#include "random.h" +#include "consensus/merkle.h" + +static void MerkleRoot(benchmark::State& state) +{ + FastRandomContext rng(true); + std::vector leaves; + leaves.resize(9001); + for (auto& item : leaves) { + item = rng.rand256(); + } + while (state.KeepRunning()) { + bool mutation = false; + uint256 hash = ComputeMerkleRoot(leaves, &mutation); + leaves[mutation] = hash; + } +} + +BENCHMARK(MerkleRoot, 800); -- cgit v1.2.3