On Mon, 3 Jul 2023 08:25:06 GMT, Glavo <d...@openjdk.org> wrote: >> # Benchmark Result >> >> >> sh make/devkit/createJMHBundle.sh >> bash configure --with-jmh=build/jmh/jars >> make test TEST="micro:java.lang.StringUpperLower.*" >> >> >> >> ## 1. >> [aliyun_ecs_c8i.xlarge](https://help.aliyun.com/document_detail/25378.html#c8i) >> * cpu : intel xeon sapphire rapids (x64) >> >> ``` diff >> -Benchmark Mode Cnt Score Error Units (baseline) >> -StringUpperLower.lowerToLower avgt 15 27.180 ± 0.017 ns/op >> -StringUpperLower.lowerToUpper avgt 15 47.196 ± 0.066 ns/op >> -StringUpperLower.mixedToLower avgt 15 32.307 ± 0.072 ns/op >> -StringUpperLower.mixedToUpper avgt 15 44.005 ± 0.414 ns/op >> -StringUpperLower.upperToLower avgt 15 32.310 ± 0.033 ns/op >> -StringUpperLower.upperToUpper avgt 15 42.053 ± 0.341 ns/op >> >> +Benchmark Mode Cnt Score Error Units >> +StringUpperLower.lowerToLower avgt 15 16.976 ± 0.043 ns/op (+60.160) >> +StringUpperLower.lowerToUpper avgt 15 46.373 ± 0.086 ns/op (+1.77%) >> +StringUpperLower.mixedToLower avgt 15 32.018 ± 0.061 ns/op (+0.9%) >> +StringUpperLower.mixedToUpper avgt 15 42.019 ± 0.473 ns/op (+4.72%) >> +StringUpperLower.upperToLower avgt 15 32.052 ± 0.051 ns/op (+0.8%) >> +StringUpperLower.upperToUpper avgt 15 16.978 ± 0.190 ns/op (+47.69%) >> >> >> ## 2. >> [aliyun_ecs_c8a.xlarge](https://help.aliyun.com/document_detail/25378.html#c8a) >> * cpu : amd epc genoa (x64) >> >> ``` diff >> -Benchmark Mode Cnt Score Error Units (baseline) >> -StringUpperLower.lowerToLower avgt 15 22.164 ± 0.021 ns/op >> -StringUpperLower.lowerToUpper avgt 15 46.113 ± 0.047 ns/op >> -StringUpperLower.mixedToLower avgt 15 28.501 ± 0.037 ns/op >> -StringUpperLower.mixedToUpper avgt 15 38.782 ± 0.038 ns/op >> -StringUpperLower.upperToLower avgt 15 28.625 ± 0.162 ns/op >> -StringUpperLower.upperToUpper avgt 15 27.960 ± 0.038 ns/op >> >> +Benchmark Mode Cnt Score Error Units >> +StringUpperLower.lowerToLower avgt 15 15.273 ± 0.012 ns/op (+45.18%) >> +StringUpperLower.lowerToUpper avgt 15 46.939 ± 0.037 ns/op (-1.75%) >> +StringUpperLower.mixedToLower avgt 15 27.978 ± 0.015 ns/op (+1.86%) >> +StringUpperLower.mixedToUpper avgt 15 38.120 ± 0.047 ns/op (+1.73%) >> +StringUpperLower.upperToLower avgt 15 27.994 ± 0.053 ns/op (+2.25%) >> +StringUpperLower.upperToUpper avgt 15 17.405 ± 0.006 ns/op (+60.64%) >> >> >> >> ## 3. [aliyun_ecs_c8y.x... > > src/java.base/share/classes/java/lang/StringLatin1.java line 442: > >> 440: if (!canEncode(cp)) { // not a latin1 >> character >> 441: return toLowerCaseEx(str, value, first, locale, false); >> 442: } > > Suggestion: > > > > I think this branch is unnecessary. All lowercase forms of Latin-1 characters > can be encoded using Latin-1.
String str0 = new String(new byte[]{-75}, StandardCharsets.ISO_8859_1); String str1 = str0.toUpperCase(); str0.coder is LATIN1 str1.coder is UTF16 ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/14751#discussion_r1250542217