mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-09 10:43:19 -05:00
bench: add benchmark for wallet creation procedure
This commit is contained in:
parent
22025d06e5
commit
bb4554c81e
2 changed files with 56 additions and 0 deletions
|
@ -84,6 +84,7 @@ endif
|
|||
if ENABLE_WALLET
|
||||
bench_bench_bitcoin_SOURCES += bench/coin_selection.cpp
|
||||
bench_bench_bitcoin_SOURCES += bench/wallet_balance.cpp
|
||||
bench_bench_bitcoin_SOURCES += bench/wallet_create.cpp
|
||||
bench_bench_bitcoin_SOURCES += bench/wallet_loading.cpp
|
||||
bench_bench_bitcoin_SOURCES += bench/wallet_create_tx.cpp
|
||||
bench_bench_bitcoin_LDADD += $(BDB_LIBS) $(SQLITE_LIBS)
|
||||
|
|
55
src/bench/wallet_create.cpp
Normal file
55
src/bench/wallet_create.cpp
Normal file
|
@ -0,0 +1,55 @@
|
|||
// Copyright (c) 2023-present The Bitcoin Core developers
|
||||
// Distributed under the MIT software license, see the accompanying
|
||||
// file COPYING or https://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#include <bench/bench.h>
|
||||
#include <node/context.h>
|
||||
#include <random.h>
|
||||
#include <test/util/setup_common.h>
|
||||
#include <wallet/context.h>
|
||||
#include <wallet/wallet.h>
|
||||
|
||||
namespace wallet {
|
||||
static void WalletCreate(benchmark::Bench& bench, bool encrypted)
|
||||
{
|
||||
auto test_setup = MakeNoLogFileContext<TestingSetup>();
|
||||
FastRandomContext random;
|
||||
|
||||
WalletContext context;
|
||||
context.args = &test_setup->m_args;
|
||||
context.chain = test_setup->m_node.chain.get();
|
||||
|
||||
DatabaseOptions options;
|
||||
options.require_format = DatabaseFormat::SQLITE;
|
||||
options.require_create = true;
|
||||
options.create_flags = WALLET_FLAG_DESCRIPTORS;
|
||||
|
||||
if (encrypted) {
|
||||
options.create_passphrase = random.rand256().ToString();
|
||||
}
|
||||
|
||||
DatabaseStatus status;
|
||||
bilingual_str error_string;
|
||||
std::vector<bilingual_str> warnings;
|
||||
|
||||
fs::path wallet_path = test_setup->m_path_root / strprintf("test_wallet_%d", random.rand32()).c_str();
|
||||
bench.run([&] {
|
||||
auto wallet = CreateWallet(context, wallet_path.u8string(), /*load_on_start=*/std::nullopt, options, status, error_string, warnings);
|
||||
assert(status == DatabaseStatus::SUCCESS);
|
||||
assert(wallet != nullptr);
|
||||
|
||||
// Cleanup
|
||||
wallet.reset();
|
||||
fs::remove_all(wallet_path);
|
||||
});
|
||||
}
|
||||
|
||||
static void WalletCreatePlain(benchmark::Bench& bench) { WalletCreate(bench, /*encrypted=*/false); }
|
||||
static void WalletCreateEncrypted(benchmark::Bench& bench) { WalletCreate(bench, /*encrypted=*/true); }
|
||||
|
||||
#ifdef USE_SQLITE
|
||||
BENCHMARK(WalletCreatePlain, benchmark::PriorityLevel::LOW);
|
||||
BENCHMARK(WalletCreateEncrypted, benchmark::PriorityLevel::LOW);
|
||||
#endif
|
||||
|
||||
} // namespace wallet
|
Loading…
Add table
Reference in a new issue