On Fri, 5 Mar 2021 14:24:34 GMT, Claes Redestad <redes...@openjdk.org> wrote:
> This patch removes the CharacterData.isOtherUppercase and isOtherLowercase > methods. It also exploits the fact that isOtherUppercase is always false for > all codepoints in the CharacterDataLatin1 range for a small speed-up. > > I have no means to test if this is correct on PPC, which has intrinsics for > isLowerCase/isUpperCase, but unless I'm reading the code wrong the intrinsic > for isLowerCase on PPC already appears to effectively do the fused logic of > isLowerCase(ch) || isOtherLowerCase(ch) since it handles the two values where > isLowerCase and isOtherLowercase disagrees (0xaa, 0xba), which means this > change should make the intrinsic and the java code be in better agreement. Microbenchmark results, org.openjdk.bench.java.lang.Characters OOTB: Benchmark (codePoint) Mode Cnt Score Error Units Characters.isLowerCase 176 avgt 5 13.812 ± 0.060 ns/op Characters.isUpperCase 176 avgt 5 13.812 ± 0.062 ns/op Benchmark (codePoint) Mode Cnt Score Error Units Characters.isLowerCase 176 avgt 5 13.825 ± 0.096 ns/op Characters.isUpperCase 176 avgt 5 12.555 ± 0.033 ns/op ~1.1x speed-up for Character.isUpperCase in the latin 1 range -Xint: Benchmark (codePoint) Mode Cnt Score Error Units Characters.isLowerCase 176 avgt 5 754.756 ± 20.815 ns/op Characters.isUpperCase 176 avgt 5 755.403 ± 15.645 ns/op Benchmark (codePoint) Mode Cnt Score Error Units Characters.isLowerCase 176 avgt 5 606.923 ± 1.569 ns/op Characters.isUpperCase 176 avgt 5 521.073 ± 7.439 ns/op 1.25x speed-up for isLowerCase and 1.45x speed-up for isUpperCase when interpreting, translating to minor startup / warmup win on some examined apps. ------------- PR: https://git.openjdk.java.net/jdk/pull/2846