Benchmark Merkle root computation

This commit is contained in:
Pieter Wuille 2017-09-27 17:36:56 -07:00
parent 6b824c090f
commit 0df017889b
2 changed files with 27 additions and 0 deletions

View file

@ -21,6 +21,7 @@ bench_bench_bitcoin_SOURCES = \
bench/rollingbloom.cpp \ bench/rollingbloom.cpp \
bench/crypto_hash.cpp \ bench/crypto_hash.cpp \
bench/ccoins_caching.cpp \ bench/ccoins_caching.cpp \
bench/merkle_root.cpp \
bench/mempool_eviction.cpp \ bench/mempool_eviction.cpp \
bench/verify_script.cpp \ bench/verify_script.cpp \
bench/base58.cpp \ bench/base58.cpp \

26
src/bench/merkle_root.cpp Normal file
View file

@ -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<uint256> 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);