Reduce allocations in poll(2) implementation #1705
Closed
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.
This changes the poll(2) implementation to reuse to
Vec
tors, so that we don't allocate in calls toPoll::poll
in most cases. 1 The downside to this is thatPoll
andRegistry
will contains twoVec
s, which will increase their size. Especially forRegistry
this is annoying because they are never used. It might be worth considering exposing the samePoll
/Registry
split in thesys
module to avoid this overhead forRegistry
.This also contains a small cleanup commit to make the code match the style of the other files.
Closes #1701
/cc @jasta this is what I meant in #1687 (comment) and #1687 (comment)
Footnotes
Initially the vectors will be zero-sized and thus it will allocate in the first (couple of) calls, but at some point the capacity should be sufficient for further calls to no longer allocate. ↩