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.
Deref of an atom (e.g.
atom.to_string()
) which stores the string inline performs slicing with&src[..len]
.len
is guaranteed to be within bounds, as an inline atom is always 7 bytes or less, so this can be substituted withsrc.get_unchecked(..len)
.Removing this bounds check improves performance of deref-ing an inline atom by approx 30%.
There's a lot of noise in the benchmarks, but it also seems to slightly improve performance of deref-ing static and dynamic atoms too, presumably because it reduces the size of the
deref()
function.NB There's no gain to making the same change in
From<Cow<'a, str>> for Atom<Static>
because the compiler already deduces no bounds check is required due to theif len <= MAX_INLINE_LEN
conditional.