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

Reply via email to