<i18n dev> RFR: 8263677: Improve Character.isLowerCase/isUpperCase lookups
Claes Redestad
redestad at openjdk.java.net
Tue Mar 16 19:48:19 UTC 2021
On Tue, 16 Mar 2021 12:51:02 GMT, Claes Redestad <redestad at openjdk.org> wrote:
> This patch changes the otherLowercase / otherUppercase bits to be set if either the codepoint is of type LOWERCASE_LETTER and UPPERCASE_LETTER, or the Unicode Other_Lowercase / Other_Uppercase property is set. This simplifies the lookup in Character.isLowerCase/isUpperCase to a single table lookup, which appears to be healthy for performance.
>
> I also took the opportunity to clean up the somewhat dated GenerateCharacter utility class.
>
> Testing: tier1-3
Baseline:
Benchmark (codePoint) Mode Cnt Score Error Units
Characters.isLowerCase 9 avgt 5 13.809 ± 0.032 ns/op
Characters.isLowerCase 65 avgt 5 13.811 ± 0.052 ns/op
Characters.isLowerCase 97 avgt 5 12.552 ± 0.057 ns/op
Characters.isLowerCase 128 avgt 5 13.823 ± 0.076 ns/op
Characters.isLowerCase 170 avgt 5 13.811 ± 0.066 ns/op
Characters.isLowerCase 223 avgt 5 12.556 ± 0.058 ns/op
Characters.isLowerCase 410 avgt 5 19.466 ± 0.104 ns/op
Characters.isLowerCase 430 avgt 5 20.718 ± 0.100 ns/op
Characters.isUpperCase 9 avgt 5 12.556 ± 0.056 ns/op
Characters.isUpperCase 65 avgt 5 12.559 ± 0.067 ns/op
Characters.isUpperCase 97 avgt 5 12.555 ± 0.055 ns/op
Characters.isUpperCase 128 avgt 5 12.559 ± 0.060 ns/op
Characters.isUpperCase 170 avgt 5 12.556 ± 0.036 ns/op
Characters.isUpperCase 223 avgt 5 12.554 ± 0.055 ns/op
Characters.isUpperCase 410 avgt 5 20.722 ± 0.129 ns/op
Characters.isUpperCase 430 avgt 5 19.459 ± 0.091 ns/op
Patch:
Benchmark (codePoint) Mode Cnt Score Error Units
Characters.isLowerCase 9 avgt 5 12.556 ± 0.035 ns/op
Characters.isLowerCase 65 avgt 5 12.562 ± 0.073 ns/op
Characters.isLowerCase 97 avgt 5 12.551 ± 0.062 ns/op
Characters.isLowerCase 128 avgt 5 12.553 ± 0.039 ns/op
Characters.isLowerCase 170 avgt 5 12.554 ± 0.051 ns/op
Characters.isLowerCase 223 avgt 5 12.552 ± 0.035 ns/op
Characters.isLowerCase 410 avgt 5 18.833 ± 0.068 ns/op
Characters.isLowerCase 430 avgt 5 18.832 ± 0.074 ns/op
Characters.isUpperCase 9 avgt 5 12.555 ± 0.050 ns/op
Characters.isUpperCase 65 avgt 5 12.557 ± 0.041 ns/op
Characters.isUpperCase 97 avgt 5 12.554 ± 0.056 ns/op
Characters.isUpperCase 128 avgt 5 12.554 ± 0.055 ns/op
Characters.isUpperCase 170 avgt 5 12.555 ± 0.054 ns/op
Characters.isUpperCase 223 avgt 5 12.553 ± 0.036 ns/op
Characters.isUpperCase 410 avgt 5 18.831 ± 0.099 ns/op
Characters.isUpperCase 430 avgt 5 18.826 ± 0.047 ns/op
-------------
PR: https://git.openjdk.java.net/jdk/pull/3028
More information about the i18n-dev
mailing list