Repository navigation
Conversation
Marker::to_u8 is a large match that LLVM was not inlining across the crate boundary, so every marker write paid for an out-of-line call and constant markers never folded. Forcing inlining cuts ~11% off rmp_serde::to_vec on a struct-heavy payload.
FallibleWriter called Vec::try_reserve before every write, and most writes are 1-9 bytes (markers, lengths, small ints). Plain extend_from_slice already amortizes growth. On a ~230 KB struct-heavy payload: to_vec 88us -> 63us, to_vec_named 171us -> 99us. Output bytes are unchanged. Tradeoff: allocation failure now aborts (standard Vec behaviour) instead of surfacing as an io::ErrorKind::OutOfMemory error.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
No description provided.