Bitcoin ABC
0.26.3
P2P Digital Currency
Loading...
Searching...
No Matches
src
bench
merkle_root.cpp
Go to the documentation of this file.
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/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
FastRandomContext
rng(
true
);
13
std::vector<uint256>
leaves
;
14
leaves
.resize(9001);
15
for
(
auto
&item :
leaves
) {
16
item = rng.
rand256
();
17
}
18
bench
.batch(
leaves
.size()).unit(
"leaf"
).run([&] {
19
bool
mutation
=
false
;
20
uint256
hash =
21
ComputeMerkleRoot
(std::vector<uint256>(
leaves
), &
mutation
);
22
leaves
[
mutation
] = hash;
23
});
24
}
25
26
BENCHMARK
(
MerkleRoot
);
bench.h
BENCHMARK
#define BENCHMARK(n)
Definition
bench.h:65
FastRandomContext
Fast randomness source.
Definition
random.h:156
FastRandomContext::rand256
uint256 rand256() noexcept
generate a random uint256.
Definition
random.cpp:681
ankerl::nanobench::Bench
Main entry point to nanobench's benchmarking facility.
Definition
nanobench.h:616
uint256
256-bit opaque blob.
Definition
uint256.h:129
ComputeMerkleRoot
uint256 ComputeMerkleRoot(std::vector< uint256 > hashes, bool *mutated)
Definition
merkle.cpp:44
merkle.h
MerkleRoot
static void MerkleRoot(benchmark::Bench &bench)
Definition
merkle_root.cpp:11
random.h
GetRand
T GetRand(T nMax=std::numeric_limits< T >::max()) noexcept
Generate a uniform random integer of type T in the range [0..nMax) nMax defaults to std::numeric_limi...
Definition
random.h:85
uint256.h
Generated on Fri Nov 22 2024 02:38:21 for Bitcoin ABC by
1.9.8