mirror of
https://github.com/bitcoin/bitcoin.git
synced 2024-11-20 02:25:40 +01:00
Merge bitcoin/bitcoin#30474: fuzz: Speed up PickValue in txorphan
fa33a63bd9
fuzz: Speed up PickValue in txorphan (MarcoFalke) Pull request description: `PickValue` will advance a begin iterator on the `outpoints` set, which is expensive, because it only has a `++` operator. As it is called in a loop of `num_in` (~`outpoints.size()`), the runtime is `O(outpoints.size() ^ 2)`. Fix it by making the runtime linear. ACKs for top commit: glozow: ACKfa33a63bd9
, thanks for taking the suggestion dergoegge: utACKfa33a63bd9
Tree-SHA512: 33f440d97c6834d907d43a8d29e4fb2c995f0d244460bd079af100f13d3607a53e44a0db52f4eb5c487d98df0ff4f2f6d987bf94b922ae9f4506f1295ad6214c
This commit is contained in:
commit
910d38b22f
@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2022 The Bitcoin Core developers
|
// Copyright (c) 2022-present The Bitcoin Core developers
|
||||||
// Distributed under the MIT software license, see the accompanying
|
// Distributed under the MIT software license, see the accompanying
|
||||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
@ -37,11 +37,11 @@ FUZZ_TARGET(txorphan, .init = initialize_orphanage)
|
|||||||
SetMockTime(ConsumeTime(fuzzed_data_provider));
|
SetMockTime(ConsumeTime(fuzzed_data_provider));
|
||||||
|
|
||||||
TxOrphanage orphanage;
|
TxOrphanage orphanage;
|
||||||
std::set<COutPoint> outpoints;
|
std::vector<COutPoint> outpoints; // Duplicates are tolerated
|
||||||
|
|
||||||
// initial outpoints used to construct transactions later
|
// initial outpoints used to construct transactions later
|
||||||
for (uint8_t i = 0; i < 4; i++) {
|
for (uint8_t i = 0; i < 4; i++) {
|
||||||
outpoints.emplace(Txid::FromUint256(uint256{i}), 0);
|
outpoints.emplace_back(Txid::FromUint256(uint256{i}), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
CTransactionRef ptx_potential_parent = nullptr;
|
CTransactionRef ptx_potential_parent = nullptr;
|
||||||
@ -67,7 +67,7 @@ FUZZ_TARGET(txorphan, .init = initialize_orphanage)
|
|||||||
auto new_tx = MakeTransactionRef(tx_mut);
|
auto new_tx = MakeTransactionRef(tx_mut);
|
||||||
// add newly constructed outpoints to the coin pool
|
// add newly constructed outpoints to the coin pool
|
||||||
for (uint32_t i = 0; i < num_out; i++) {
|
for (uint32_t i = 0; i < num_out; i++) {
|
||||||
outpoints.emplace(new_tx->GetHash(), i);
|
outpoints.emplace_back(new_tx->GetHash(), i);
|
||||||
}
|
}
|
||||||
return new_tx;
|
return new_tx;
|
||||||
}();
|
}();
|
||||||
|
Loading…
Reference in New Issue
Block a user