Skip to content

Commit 1d8f4f1

Browse files
committed
Benchmark with multiple threads
1 parent 72334a1 commit 1d8f4f1

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

src/bench/wallet_silentpayments_scan.cpp

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include <script/sign.h>
1414
#include <script/signingprovider.h>
1515
#include <sync.h>
16+
#include <util/threadpool.h>
1617
#include <validation.h>
1718
#include <wallet/test/util.h>
1819
#include <wallet/receive.h>
@@ -26,7 +27,7 @@ static int SATS_PER_OUTPUT = 1;
2627
static int FEE_SATS = 1000;
2728
static size_t SP_RECIPIENT_GROUP_LIMIT = 1000;
2829

29-
static void WalletSPScan(benchmark::Bench& bench, size_t num_txs, size_t outputs_per_tx)
30+
static void WalletSPScan(benchmark::Bench& bench, size_t num_txs, size_t outputs_per_tx, size_t n_workers = 1)
3031
{
3132
auto testsetup = TestChain100Setup();
3233
auto& m_node = testsetup.m_node;
@@ -67,7 +68,9 @@ static void WalletSPScan(benchmark::Bench& bench, size_t num_txs, size_t outputs
6768
CBlockIndex* currentTip = WITH_LOCK(Assert(m_node.chainman)->GetMutex(), return m_node.chainman->ActiveChain().Tip());
6869
assert(nHeight == currentTip->nHeight);
6970

70-
CWallet wallet(m_node.chain.get(), "", CreateMockableWalletDatabase());
71+
ThreadPool threadpool{"spbench"};
72+
CWallet wallet{m_node.chain.get(), "", CreateMockableWalletDatabase(), &threadpool};
73+
if (n_workers > 1) threadpool.Start(n_workers - 1);
7174
{
7275
LOCK(wallet.cs_wallet);
7376
LOCK(Assert(m_node.chainman)->GetMutex());
@@ -147,8 +150,20 @@ static void WalletSPScan(benchmark::Bench& bench, size_t num_txs, size_t outputs
147150
*/
148151
static void WalletSPScanMaxTxOneOutput(benchmark::Bench& bench) { WalletSPScan(bench, 8986, 1); }
149152
static void WalletSPScanOneTxMaxOutputs(benchmark::Bench& bench) { WalletSPScan(bench, 1, 23246); }
153+
static void WalletSPScanOneTxMaxOutputs2(benchmark::Bench& bench) { WalletSPScan(bench, 1, 23246, 2); }
154+
static void WalletSPScanOneTxMaxOutputs4(benchmark::Bench& bench) { WalletSPScan(bench, 1, 23246, 4); }
155+
static void WalletSPScanOneTxMaxOutputs8(benchmark::Bench& bench) { WalletSPScan(bench, 1, 23246, 8); }
150156
static void WalletSPScanAvgTxAvgOutputs(benchmark::Bench& bench) { WalletSPScan(bench, 3200, 3); }
157+
static void WalletSPScanAvgTxAvgOutputs2(benchmark::Bench& bench) { WalletSPScan(bench, 3200, 3, 2); }
158+
static void WalletSPScanAvgTxAvgOutputs4(benchmark::Bench& bench) { WalletSPScan(bench, 3200, 3, 4); }
159+
static void WalletSPScanAvgTxAvgOutputs8(benchmark::Bench& bench) { WalletSPScan(bench, 3200, 3, 8); }
151160
BENCHMARK(WalletSPScanMaxTxOneOutput);
152161
BENCHMARK(WalletSPScanOneTxMaxOutputs);
162+
BENCHMARK(WalletSPScanOneTxMaxOutputs2);
163+
BENCHMARK(WalletSPScanOneTxMaxOutputs4);
164+
BENCHMARK(WalletSPScanOneTxMaxOutputs8);
153165
BENCHMARK(WalletSPScanAvgTxAvgOutputs);
166+
BENCHMARK(WalletSPScanAvgTxAvgOutputs2);
167+
BENCHMARK(WalletSPScanAvgTxAvgOutputs4);
168+
BENCHMARK(WalletSPScanAvgTxAvgOutputs8);
154169
} // namespace wallet

0 commit comments

Comments
 (0)