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;
2627static int FEE_SATS = 1000 ;
2728static 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 */
148151static void WalletSPScanMaxTxOneOutput (benchmark::Bench& bench) { WalletSPScan (bench, 8986 , 1 ); }
149152static 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 ); }
150156static 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 ); }
151160BENCHMARK (WalletSPScanMaxTxOneOutput);
152161BENCHMARK (WalletSPScanOneTxMaxOutputs);
162+ BENCHMARK (WalletSPScanOneTxMaxOutputs2);
163+ BENCHMARK (WalletSPScanOneTxMaxOutputs4);
164+ BENCHMARK (WalletSPScanOneTxMaxOutputs8);
153165BENCHMARK (WalletSPScanAvgTxAvgOutputs);
166+ BENCHMARK (WalletSPScanAvgTxAvgOutputs2);
167+ BENCHMARK (WalletSPScanAvgTxAvgOutputs4);
168+ BENCHMARK (WalletSPScanAvgTxAvgOutputs8);
154169} // namespace wallet
0 commit comments