diff --git a/src/core_write.cpp b/src/core_write.cpp index b0e3b0b3c4..2eab07bd1e 100644 --- a/src/core_write.cpp +++ b/src/core_write.cpp @@ -183,6 +183,7 @@ void TxToUniv(const CTransaction& tx, const uint256& block_hash, UniValue& entry entry.pushKV("locktime", (int64_t)tx.nLockTime); UniValue vin{UniValue::VARR}; + vin.reserve(tx.vin.size()); // If available, use Undo data to calculate the fee. Note that txundo == nullptr // for coinbase transactions and for transactions where undo data is unavailable. @@ -205,6 +206,7 @@ void TxToUniv(const CTransaction& tx, const uint256& block_hash, UniValue& entry } if (!tx.vin[i].scriptWitness.IsNull()) { UniValue txinwitness(UniValue::VARR); + txinwitness.reserve(tx.vin[i].scriptWitness.stack.size()); for (const auto& item : tx.vin[i].scriptWitness.stack) { txinwitness.push_back(HexStr(item)); } @@ -234,6 +236,7 @@ void TxToUniv(const CTransaction& tx, const uint256& block_hash, UniValue& entry entry.pushKV("vin", vin); UniValue vout(UniValue::VARR); + vout.reserve(tx.vout.size()); for (unsigned int i = 0; i < tx.vout.size(); i++) { const CTxOut& txout = tx.vout[i]; diff --git a/src/rpc/blockchain.cpp b/src/rpc/blockchain.cpp index fb22321d90..e9d134a01e 100644 --- a/src/rpc/blockchain.cpp +++ b/src/rpc/blockchain.cpp @@ -171,6 +171,7 @@ UniValue blockToJSON(BlockManager& blockman, const CBlock& block, const CBlockIn result.pushKV("size", (int)::GetSerializeSize(block, PROTOCOL_VERSION)); result.pushKV("weight", (int)::GetBlockWeight(block)); UniValue txs(UniValue::VARR); + txs.reserve(block.vtx.size()); switch (verbosity) { case TxVerbosity::SHOW_TXID: