RFR: 8311220: Optimization for StringLatin UpperLower
Jacob G.
duke at openjdk.org
Mon Jul 3 05:25:53 UTC 2023
On Mon, 3 Jul 2023 04:02:44 GMT, 温绍锦 <duke at 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.xlarge](https://help.aliyun.com/document_detail/25378.html#c8y)
> * cpu : aliyun yitian 710 (aarch64)
> ``` dif...
src/java.base/share/classes/java/lang/StringLatin1.java line 498:
> 496: for (first = 0 ; first < len; first++ ) {
> 497: int cp = value[first] & 0xff;
> 498: if (cp >= 'a' && (cp <= 'z' || cp == 181 || (cp >= 223 && cp != 247))) {
The following would be consistent with your other changes:
if (CharacterDataLatin1.instance.isLowerCase(value[first] & 0xff)) {
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/14751#discussion_r1250250652
More information about the core-libs-dev
mailing list