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.
See also my changes here https://github.com/nolanderc/heed/tree/reserved-space.
#[inline]
onReservedSpace
to enable inlining across crates. It is also possible to uselto = "thin"
orlto = true
under[profile.release]
.&[MaybeUninit<u8>]
without UB usingUninitWriter
.Seems
std::io::Write for &mut [u8]
is slower than expected. In my experiments, moving the check forbuf.len() > space.remaining()
as early as possible in thewrite
function improved performance drastically (2x faster).Test results on my laptop:
There's not a huge improvement over just pre-allocating a
Vec
, but yielded a 1.6s reduction in insertion time at its best. But this is a small benchmark where all data is the same size, which is also done on my laptop, so YMMV.