Improve the performance of put_u8 and put_i8 #669
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.
When using
put_u8/put_i8
, it internally wraps theu8/i8
into&[u8]
, and then callsput_slice()
. Wrapping it into &[u8] is an unnecessary operation. So I optimized this step.Here's the benchmark below:
Before
test put_u8_bytes_mut ... bench: 333 ns/iter (+/- 70) = 384 MB/s
After
test put_u8_bytes_mut ... bench: 271 ns/iter (+/- 8) = 472 MB/s