mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-04-22 14:35:07 +02:00
Merge bitcoin/bitcoin#31457: fuzz: Speed up *_package_eval fuzz targets a bit
fac3d93c2ba84899c2c6516b5449f61ef653d9fa fuzz: Speed up *_package_eval fuzz targets a bit (MarcoFalke) fa40fd043ab23eb8948c208ca82f75f3d40bb2e4 fuzz: [refactor] Avoid confusing c-style cast (MarcoFalke) Pull request description: Each target is at least 10% faster for me when running over the current set of qa-assets, which seems nice. The changes `outpoints_value` from a map to an unordered map, which is safe, because the element order is not used in the fuzz test and the map is only used for lookup. (`mempool_outpoints` can't be changed, because the order matters here. Using unordered_set here may result in a non-deterministic fuzz target, given the same fuzz input.) ACKs for top commit: l0rinc: ACK fac3d93c2ba84899c2c6516b5449f61ef653d9fa dergoegge: Code review ACK fac3d93c2ba84899c2c6516b5449f61ef653d9fa Tree-SHA512: 8ae5d4e281505aff76a4003d6e9ea388dbb73860e167385bd6a0a201b3acc939db29ee212594952a9e80e85b3cc4cd726ce6dd49551f74013cb4da8a15cbdfb3
This commit is contained in:
commit
ef525e8b7c
@ -201,7 +201,7 @@ FUZZ_TARGET(ephemeral_package_eval, .init = initialize_tx_pool)
|
||||
|
||||
// All RBF-spendable outpoints outside of the unsubmitted package
|
||||
std::set<COutPoint> mempool_outpoints;
|
||||
std::map<COutPoint, CAmount> outpoints_value;
|
||||
std::unordered_map<COutPoint, CAmount, SaltedOutpointHasher> outpoints_value;
|
||||
for (const auto& outpoint : g_outpoints_coinbase_init_mature) {
|
||||
Assert(mempool_outpoints.insert(outpoint).second);
|
||||
outpoints_value[outpoint] = 50 * COIN;
|
||||
@ -225,7 +225,7 @@ FUZZ_TARGET(ephemeral_package_eval, .init = initialize_tx_pool)
|
||||
std::optional<COutPoint> outpoint_to_rbf{fuzzed_data_provider.ConsumeBool() ? GetChildEvictingPrevout(tx_pool) : std::nullopt};
|
||||
|
||||
// Make small packages
|
||||
const auto num_txs = outpoint_to_rbf ? 1 : (size_t) fuzzed_data_provider.ConsumeIntegralInRange<int>(1, 4);
|
||||
const auto num_txs = outpoint_to_rbf ? 1 : fuzzed_data_provider.ConsumeIntegralInRange<size_t>(1, 4);
|
||||
|
||||
std::set<COutPoint> package_outpoints;
|
||||
while (txs.size() < num_txs) {
|
||||
@ -356,7 +356,7 @@ FUZZ_TARGET(tx_package_eval, .init = initialize_tx_pool)
|
||||
|
||||
// All RBF-spendable outpoints outside of the unsubmitted package
|
||||
std::set<COutPoint> mempool_outpoints;
|
||||
std::map<COutPoint, CAmount> outpoints_value;
|
||||
std::unordered_map<COutPoint, CAmount, SaltedOutpointHasher> outpoints_value;
|
||||
for (const auto& outpoint : g_outpoints_coinbase_init_mature) {
|
||||
Assert(mempool_outpoints.insert(outpoint).second);
|
||||
outpoints_value[outpoint] = 50 * COIN;
|
||||
@ -377,7 +377,7 @@ FUZZ_TARGET(tx_package_eval, .init = initialize_tx_pool)
|
||||
std::vector<CTransactionRef> txs;
|
||||
|
||||
// Make packages of 1-to-26 transactions
|
||||
const auto num_txs = (size_t) fuzzed_data_provider.ConsumeIntegralInRange<int>(1, 26);
|
||||
const auto num_txs = fuzzed_data_provider.ConsumeIntegralInRange<size_t>(1, 26);
|
||||
std::set<COutPoint> package_outpoints;
|
||||
while (txs.size() < num_txs) {
|
||||
// Create transaction to add to the mempool
|
||||
|
Loading…
x
Reference in New Issue
Block a user