Auto merge of #121138 - Swatinem:grapheme-extend-ascii, r= · rust-lang/rust@2d650c6 (original) (raw)
Navigation Menu
- Explore
- Pricing
Provide feedback
Saved searches
Use saved searches to filter your results more quickly
Commit 2d650c6
Auto merge of #121138 - Swatinem:grapheme-extend-ascii, r=
Add ASCII fast-path for `char::is_grapheme_extended` I discovered that `impl Debug for str` is quite slow because it ends up doing a `unicode_data::grapheme_extend::lookup` for each char, which ends up doing a binary search. This introduces a fast-path for ASCII chars which do not have this property. The `lookup` is thus completely gone from profiles. --- As a followup, maybe it’s worth implementing this fast path directly in `unicode_data` so that it can check for the lower bound directly before going to a potentially expensive binary search.
File tree
1 file changed
lines changed
1 file changed
lines changed
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -927,7 +927,7 @@ impl char { | ||
927 | 927 | #[must_use] |
928 | 928 | #[inline] |
929 | 929 | pub(crate) fn is_grapheme_extended(self) -> bool { |
930 | - unicode::Grapheme_Extend(self) | |
930 | +self > '\x7f' && unicode::Grapheme_Extend(self) | |
931 | 931 | } |
932 | 932 | |
933 | 933 | /// Returns `true` if this `char` has one of the general categories for numbers. |