fix(kad): improve memory allocation when iterating over kbuckets #5715
+75
−37
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Proposal to fix #5712.
I have changed to
ClosestIter
structure to only allocate whenkbucket_size
is higher thanK_VALUE
and only once along the life ofClosestIter
. I think I did not break anything but I would really like some experienced people with Kademlia to take a look (@guillaumemichel 😉).Notes & open questions
I have kept thesort_by
in theIterator
implementation ofClosestIter
but I think we could remove every allocation whatsoever if we usedmin_by
but I'm not sure that it would not change the research behaviour that's why I did not changed it. If experienced developers think that it would be equivalent I will do it.It was a dumb question. I did not fully understood how the
ClosestIter
was working.Change checklist