Skip to content

Commit 2db93f2

Browse files
fanquakeknst
authored andcommitted
Merge bitcoin#29608: optimization: Preallocate addresses in GetAddr based on nNodes
66082ca Preallocate addresses in GetAddr based on nNodes (Lőrinc) Pull request description: The reserve method optimizes memory allocation by preallocating space for the expected number of elements (nNodes), reducing reallocations and improving performance. The upper bound ensures efficient memory usage based on the input constraints. before: ``` | ns/op | op/s | err% | total | benchmark |--------------------:|--------------------:|--------:|----------:|:---------- | 76,852.79 | 13,011.89 | 0.4% | 1.07 | `AddrManGetAddr` | 76,598.21 | 13,055.14 | 0.2% | 1.07 | `AddrManGetAddr` | 76,296.32 | 13,106.79 | 0.1% | 1.07 | `AddrManGetAddr` ``` after: ``` | ns/op | op/s | err% | total | benchmark |--------------------:|--------------------:|--------:|----------:|:---------- | 65,966.97 | 15,159.10 | 0.3% | 1.07 | `AddrManGetAddr` | 66,075.40 | 15,134.23 | 0.2% | 1.06 | `AddrManGetAddr` | 66,306.34 | 15,081.51 | 0.3% | 1.06 | `AddrManGetAddr` ``` ACKs for top commit: stickies-v: ACK 66082ca vasild: ACK 66082ca Tree-SHA512: 1175cff250d9c52ed042e8807ddc2afd64a806e6f2195b5c648752869ff3beec0be8a8cbd7ab6ba35cd7077d79b88a380da6c6e244f5549f98cdd472808b6d8f
1 parent 07674ac commit 2db93f2

File tree

1 file changed

+1
-0
lines changed

1 file changed

+1
-0
lines changed

src/addrman.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -823,6 +823,7 @@ std::vector<CAddress> AddrManImpl::GetAddr_(size_t max_addresses, size_t max_pct
823823
// gather a list of random nodes, skipping those of low quality
824824
const auto now{Now<NodeSeconds>()};
825825
std::vector<CAddress> addresses;
826+
addresses.reserve(nNodes);
826827
for (unsigned int n = 0; n < vRandom.size(); n++) {
827828
if (addresses.size() >= nNodes)
828829
break;

0 commit comments

Comments
 (0)