<i18n dev> RFR: 8302871: Speed up StringLatin1.regionMatchesCI [v2]
Eirik Bjorsnos
duke at openjdk.org
Mon Feb 20 13:39:09 UTC 2023
> This PR suggests we can speed up `StringLatin1.regionMatchesCI` by applying 'the oldest ASCII trick in the book'.
>
> The new static method `CharacterDataLatin1.equalsIgnoreCase` compares two latin1 bytes for equality ignoring case. `StringLatin1.regionMatchesCI` is updated to use `equalsIgnoreCase`
>
> To verify the correctness of `equalsIgnoreCase`, a new test is added to `EqualsIgnoreCase` with an exhaustive verification that all 256x256 latin1 code point pairs have an `equalsIgnoreCase` consistent with Character.toUpperCase, Character.toLowerCase.
>
> Performance is tested for matching and mismatching cases of code point pairs picked from the ASCII letter, ASCII number and latin1 letter ranges. Results in the first comment below.
Eirik Bjorsnos has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains five additional commits since the last revision:
- Align whitespace to make example strings easier to read
- Merge branch 'master' into regionmatches-latin1-speedup
- Exhaustive verification needs to cover the case b1 == b2
- Move multiplication exclusion to the lat1 range branch
- Speed up StringLatin1.regionMatchesCI by applying the 'oldest ASCII trick in the book'
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/12632/files
- new: https://git.openjdk.org/jdk/pull/12632/files/a583bcd6..59c42298
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=12632&range=01
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=12632&range=00-01
Stats: 57495 lines in 1316 files changed: 24512 ins; 15682 del; 17301 mod
Patch: https://git.openjdk.org/jdk/pull/12632.diff
Fetch: git fetch https://git.openjdk.org/jdk pull/12632/head:pull/12632
PR: https://git.openjdk.org/jdk/pull/12632
More information about the i18n-dev
mailing list