Bitcoin Core
31.0.0
P2P Digital Currency
Loading...
Searching...
No Matches
src
bench
descriptors.cpp
Go to the documentation of this file.
1
// Copyright (c) 2019-present 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
#include <
key.h
>
7
#include <
script/descriptor.h
>
8
#include <
script/script.h
>
9
#include <
script/signingprovider.h
>
10
11
#include <cassert>
12
#include <cstdint>
13
#include <memory>
14
#include <string>
15
#include <string_view>
16
#include <utility>
17
#include <vector>
18
19
static
void
ExpandDescriptor
(
benchmark::Bench
&
bench
)
20
{
21
ECC_Context
ecc_context
{};
22
23
constexpr
std::string_view
desc_str
{
"sh(wsh(multi(16,03669b8afcec803a0d323e9a17f3ea8e68e8abe5a278020a929adbec52421adbd0,0260b2003c386519fc9eadf2b5cf124dd8eea4c4e68d5e154050a9346ea98ce600,0362a74e399c39ed5593852a30147f2959b56bb827dfa3e60e464b02ccf87dc5e8,0261345b53de74a4d721ef877c255429961b7e43714171ac06168d7e08c542a8b8,02da72e8b46901a65d4374fe6315538d8f368557dda3a1dcf9ea903f3afe7314c8,0318c82dd0b53fd3a932d16e0ba9e278fcc937c582d5781be626ff16e201f72286,0297ccef1ef99f9d73dec9ad37476ddb232f1238aff877af19e72ba04493361009,02e502cfd5c3f972fe9a3e2a18827820638f96b6f347e54d63deb839011fd5765d,03e687710f0e3ebe81c1037074da939d409c0025f17eb86adb9427d28f0f7ae0e9,02c04d3a5274952acdbc76987f3184b346a483d43be40874624b29e3692c1df5af,02ed06e0f418b5b43a7ec01d1d7d27290fa15f75771cb69b642a51471c29c84acd,036d46073cbb9ffee90473f3da429abc8de7f8751199da44485682a989a4bebb24,02f5d1ff7c9029a80a4e36b9a5497027ef7f3e73384a4a94fbfe7c4e9164eec8bc,02e41deffd1b7cce11cde209a781adcffdabd1b91c0ba0375857a2bfd9302419f3,02d76625f7956a7fc505ab02556c23ee72d832f1bac391bcd2d3abce5710a13d06,0399eb0a5487515802dc14544cf10b3666623762fbed2ec38a3975716e2c29c232)))"
};
24
const
std::pair<int64_t, int64_t>
range
= {0, 1000};
25
FlatSigningProvider
provider;
26
std::string error;
27
auto
descs
=
Parse
(
desc_str
, provider, error);
28
29
bench
.run([&] {
30
for
(
int
i =
range
.first; i <=
range
.second; ++i) {
31
std::vector<CScript> scripts;
32
bool
success =
descs
[0]->Expand(i, provider, scripts, provider);
33
assert
(success);
34
}
35
});
36
}
37
38
BENCHMARK
(
ExpandDescriptor
);
bench.h
BENCHMARK
#define BENCHMARK(n)
Definition
bench.h:68
ecc_context
ECC_Context ecc_context
Definition
bitcoin-wallet.cpp:126
ECC_Context
RAII class initializing and deinitializing global state for elliptic curve support.
Definition
key.h:326
ankerl::nanobench::Bench
Main entry point to nanobench's benchmarking facility.
Definition
nanobench.h:627
Parse
static UniValue Parse(std::string_view raw, ParamFormat format=ParamFormat::JSON)
Parse string to UniValue or throw runtime_error if string contains invalid JSON.
Definition
client.cpp:395
ExpandDescriptor
static void ExpandDescriptor(benchmark::Bench &bench)
Definition
descriptors.cpp:19
key.h
descriptor.h
script.h
signingprovider.h
FlatSigningProvider
Definition
signingprovider.h:224
Ticks
constexpr auto Ticks(Dur2 d)
Helper to count the seconds of a duration/time_point.
Definition
time.h:73
assert
assert(!tx.IsCoinBase())
Generated on Thu Apr 16 2026 09:42:38 for Bitcoin Core by
1.10.0