From 57820c472b4e1b10fc0d2cc5b60c4783338edc7c Mon Sep 17 00:00:00 2001 From: Ava Chow Date: Mon, 6 Apr 2026 14:58:53 -0700 Subject: [PATCH] bench: Utilize setup() for WalletLoading and use a real database Instead of making a mock database and duplicating it for the benchmark, use a real database. Also use setup() to avoid measuring the overhead in the benchmark. --- src/bench/wallet_loading.cpp | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/src/bench/wallet_loading.cpp b/src/bench/wallet_loading.cpp index 20997ff8927..09028acdb03 100644 --- a/src/bench/wallet_loading.cpp +++ b/src/bench/wallet_loading.cpp @@ -42,7 +42,12 @@ static void WalletLoadingDescriptors(benchmark::Bench& bench) // Setup the wallet // Loading the wallet will also create it uint64_t create_flags = WALLET_FLAG_DESCRIPTORS; - auto database = CreateMockableWalletDatabase(); + DatabaseStatus status; + DatabaseOptions options; + options.require_format = DatabaseFormat::SQLITE; + options.require_create = true; + bilingual_str error; + auto database = MakeWalletDatabase("", options, status, error); auto wallet = TestCreateWallet(std::move(database), context, create_flags); // Generate a bunch of transactions and addresses to put into the wallet @@ -50,18 +55,20 @@ static void WalletLoadingDescriptors(benchmark::Bench& bench) AddTx(*wallet); } - database = DuplicateMockDatabase(wallet->GetDatabase()); + options.require_create = false; + options.require_existing = true; - // reload the wallet for the actual benchmark + bench.epochs(5) + .setup([&] { + TestUnloadWallet(std::move(wallet)); + database = MakeWalletDatabase("", options, status, error); + }) + .run([&] { + wallet = TestLoadWallet(std::move(database), context); + }); + + // Cleanup TestUnloadWallet(std::move(wallet)); - - bench.epochs(5).run([&] { - wallet = TestLoadWallet(std::move(database), context); - - // Cleanup - database = DuplicateMockDatabase(wallet->GetDatabase()); - TestUnloadWallet(std::move(wallet)); - }); } BENCHMARK(WalletLoadingDescriptors);