On Wed, 20 Apr 2022 20:09:06 GMT, XenoAmess <d...@openjdk.java.net> wrote:
>> some thoughts after watching 8285001: Simplify StringLatin1.regionMatches >> https://github.com/openjdk/jdk/pull/8292/ >> >> if (Character.toLowerCase(u1) == Character.toLowerCase(u2)) { >> continue; >> } >> >> should be changed to >> >> if (((u1 == c1) ? CharacterDataLatin1.instance.toLowerCase(c1) : >> c1) == Character.toLowerCase(u2)) { >> continue; >> } >> >> as: >> >> 1. c1 is LATIN1, so CharacterDataLatin1.instance.toLowerCase seems faster. >> 2. because c1 is LATIN1, so if u1 != c1, then c1 is already lowercase, and >> don't need a lowercase cauculation. > > XenoAmess has updated the pull request incrementally with one additional > commit since the last revision: > > add jmh test Thanks for the JMH tests and data. The only part needed from the JMH run is the last 9 lines. The rest is noise. If it was formatted as a literal it would be easier to read. What I see is that the run with == is quite a bit slower. With the == check: StringOther.regionMatchesU1024LL avgt 15 187.258 ± 1.038 ns/op StringOther.regionMatchesU1024LU avgt 15 2589.833 ± 8.823 ns/op StringOther.regionMatchesU1024UL avgt 15 2379.645 ± 6.481 ns/op StringOther.regionMatchesU1024UU avgt 15 191.587 ± 7.069 ns/op Without the == check: StringOther.regionMatchesU1024LL avgt 15 187.732 ± 1.914 ns/op StringOther.regionMatchesU1024LU avgt 15 1324.156 ± 11.761 ns/op StringOther.regionMatchesU1024UL avgt 15 1331.857 ± 22.509 ns/op StringOther.regionMatchesU1024UU avgt 15 188.872 ± 2.396 ns/op In the JMH cases, does the long prefix of latin1 characters distort the timings? ------------- PR: https://git.openjdk.java.net/jdk/pull/8308