Bitcoin Core
0.21.1
P2P Digital Currency
Main Page
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Modules
src
bench
merkle_root.cpp
Go to the documentation of this file.
1
// Copyright (c) 2016-2020 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/bench.h
>
6
7
#include <
consensus/merkle.h
>
8
#include <
random.h
>
9
#include <
uint256.h
>
10
11
static
void
MerkleRoot
(
benchmark::Bench
& bench)
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
bench.
batch
(leaves.size()).unit(
"leaf"
).
run
([&] {
20
bool
mutation =
false
;
21
uint256
hash =
ComputeMerkleRoot
(std::vector<uint256>(leaves), &mutation);
22
leaves[mutation] = hash;
23
});
24
}
25
26
BENCHMARK
(
MerkleRoot
);
FastRandomContext::rand256
uint256 rand256() noexcept
generate a random uint256.
Definition:
random.cpp:616
merkle.h
ankerl::nanobench::Bench::run
Bench & run(char const *benchmarkName, Op &&op)
Repeatedly calls op() based on the configuration, and performs measurements.
Definition:
nanobench.h:1134
FastRandomContext
Fast randomness source.
Definition:
random.h:119
uint256
256-bit opaque blob.
Definition:
uint256.h:124
ComputeMerkleRoot
uint256 ComputeMerkleRoot(std::vector< uint256 > hashes, bool *mutated)
Definition:
merkle.cpp:45
bench.h
uint256.h
MerkleRoot
static void MerkleRoot(benchmark::Bench &bench)
Definition:
merkle_root.cpp:11
ankerl::nanobench::Bench
Main entry point to nanobench's benchmarking facility.
Definition:
nanobench.h:583
random.h
BENCHMARK
BENCHMARK(MerkleRoot)
ankerl::nanobench::Bench::batch
ANKERL_NANOBENCH(NODISCARD) std Bench & batch(T b) noexcept
Sets the batch size.
Generated on Fri Apr 30 2021 13:53:37 for Bitcoin Core by
1.8.8