perf(gix-utils): add normalization fast path #2120
Merged
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.
unicode_normalizationprovide fast-paths functions (is_nfc_quick/is_nfd_quick) for quick-checks to determine if (de-)composition is necessary. These functions may can return an ambiguous results in certain cases (Maybe), to avoid thisis_nfc/is_nfdexists which do slow checks if these functions returnMaybe(matching the current code ingix-utils).For strings that do not require normalisation the
is_nfc/is_nfdare about 75% faster, but 20% slower for strings that do require normalisation. As far as I can tell the slowdown can be avoided by avoiding the slow check e.gis_nfc_quick(s.chars()) == IsNormalized::Yes, but this may come at the expense of unnecessary allocations.