<i18n dev> RFR: 8263091: Remove CharacterData.isOtherUppercase/-Lowercase

Claes Redestad redestad at openjdk.java.net
Fri Mar 5 16:02:42 UTC 2021


On Fri, 5 Mar 2021 14:24:34 GMT, Claes Redestad <redestad at 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


More information about the i18n-dev mailing list