Changeset View
Changeset View
Standalone View
Standalone View
src/bench/coin_selection.cpp
Show All 34 Lines | |||||
// (https://github.com/bitcoin/bitcoin/issues/7883#issuecomment-224807484) | // (https://github.com/bitcoin/bitcoin/issues/7883#issuecomment-224807484) | ||||
static void CoinSelection(benchmark::State &state) { | static void CoinSelection(benchmark::State &state) { | ||||
SelectParams(CBaseChainParams::REGTEST); | SelectParams(CBaseChainParams::REGTEST); | ||||
const CWallet wallet(Params()); | const CWallet wallet(Params()); | ||||
std::vector<COutput> vCoins; | std::vector<COutput> vCoins; | ||||
LOCK(wallet.cs_wallet); | LOCK(wallet.cs_wallet); | ||||
while (state.KeepRunning()) { | while (state.KeepRunning()) { | ||||
// Empty wallet. | |||||
for (COutput output : vCoins) { | |||||
delete output.tx; | |||||
} | |||||
vCoins.clear(); | |||||
// Add coins. | // Add coins. | ||||
for (int i = 0; i < 1000; i++) | for (int i = 0; i < 1000; i++) | ||||
addCoin(1000 * COIN, wallet, vCoins); | addCoin(1000 * COIN, wallet, vCoins); | ||||
addCoin(3 * COIN, wallet, vCoins); | addCoin(3 * COIN, wallet, vCoins); | ||||
std::set<CInputCoin> setCoinsRet; | std::set<CInputCoin> setCoinsRet; | ||||
Amount nValueRet; | Amount nValueRet; | ||||
bool success = wallet.SelectCoinsMinConf(1003 * COIN, 1, 6, 0, vCoins, | bool success = wallet.SelectCoinsMinConf(1003 * COIN, 1, 6, 0, vCoins, | ||||
setCoinsRet, nValueRet); | setCoinsRet, nValueRet); | ||||
assert(success); | assert(success); | ||||
assert(nValueRet == 1003 * COIN); | assert(nValueRet == 1003 * COIN); | ||||
assert(setCoinsRet.size() == 2); | assert(setCoinsRet.size() == 2); | ||||
// Empty wallet. | |||||
for (COutput output : vCoins) { | |||||
delete output.tx; | |||||
} | |||||
vCoins.clear(); | |||||
} | } | ||||
} | } | ||||
BENCHMARK(CoinSelection, 650); | BENCHMARK(CoinSelection, 650); |