Skip to content

Commit 0df0178

Browse files
committed
Benchmark Merkle root computation
1 parent 6b824c0 commit 0df0178

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

src/Makefile.bench.include

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ bench_bench_bitcoin_SOURCES = \
2121
bench/rollingbloom.cpp \
2222
bench/crypto_hash.cpp \
2323
bench/ccoins_caching.cpp \
24+
bench/merkle_root.cpp \
2425
bench/mempool_eviction.cpp \
2526
bench/verify_script.cpp \
2627
bench/base58.cpp \

src/bench/merkle_root.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// Copyright (c) 2016 The Bitcoin Core developers
2+
// Distributed under the MIT software license, see the accompanying
3+
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4+
5+
#include "bench.h"
6+
7+
#include "uint256.h"
8+
#include "random.h"
9+
#include "consensus/merkle.h"
10+
11+
static void MerkleRoot(benchmark::State& state)
12+
{
13+
FastRandomContext rng(true);
14+
std::vector<uint256> leaves;
15+
leaves.resize(9001);
16+
for (auto& item : leaves) {
17+
item = rng.rand256();
18+
}
19+
while (state.KeepRunning()) {
20+
bool mutation = false;
21+
uint256 hash = ComputeMerkleRoot(leaves, &mutation);
22+
leaves[mutation] = hash;
23+
}
24+
}
25+
26+
BENCHMARK(MerkleRoot, 800);

0 commit comments

Comments
 (0)