On Wed, 6 Sep 2023 22:22:12 GMT, 温绍锦 <d...@openjdk.org> wrote: >> Optimization for: >> Integer.toString >> Long.toString >> StringBuilder#append(int) >> >> # Benchmark Result >> >> >> sh make/devkit/createJMHBundle.sh >> bash configure --with-jmh=build/jmh/jars >> make test TEST="micro:java.lang.Integers.toString*" >> make test TEST="micro:java.lang.Longs.toString*" >> make test TEST="micro:java.lang.StringBuilders.toStringCharWithInt8" >> >> >> ## 1. >> [aliyun_ecs_c8i.xlarge](https://help.aliyun.com/document_detail/25378.html#c8i) >> * cpu : intel xeon sapphire rapids (x64) >> >> ``` diff >> -Benchmark (size) Mode Cnt Score Error Units (baseline) >> -Integers.toStringBig 500 avgt 15 6.825 ± 0.023 us/op >> -Integers.toStringSmall 500 avgt 15 4.823 ± 0.023 us/op >> -Integers.toStringTiny 500 avgt 15 3.878 ± 0.101 us/op >> >> +Benchmark (size) Mode Cnt Score Error Units (PR Update >> 04 f4aa1989) >> +Integers.toStringBig 500 avgt 15 6.002 ± 0.054 us/op (+13.71%) >> +Integers.toStringSmall 500 avgt 15 4.025 ± 0.020 us/op (+19.82%) >> +Integers.toStringTiny 500 avgt 15 3.874 ± 0.067 us/op (+0.10%) >> >> -Benchmark (size) Mode Cnt Score Error Units (baseline) >> -Longs.toStringBig 500 avgt 15 9.224 ± 0.021 us/op >> -Longs.toStringSmall 500 avgt 15 4.621 ± 0.087 us/op >> >> +Benchmark (size) Mode Cnt Score Error Units (PR Update 04 >> f4aa1989) >> +Longs.toStringBig 500 avgt 15 7.483 ± 0.018 us/op (+23.26%) >> +Longs.toStringSmall 500 avgt 15 4.020 ± 0.016 us/op (+14.95%) >> >> -Benchmark Mode Cnt Score Error Units >> (baseline) >> -StringBuilders.toStringCharWithInt8 avgt 15 89.327 ± 0.733 ns/op >> >> +Benchmark Mode Cnt Score Error Units (PR >> Update 04 f4aa1989) >> +StringBuilders.toStringCharWithInt8 avgt 15 36.639 ± 0.422 ns/op >> (+143.80%) >> >> >> >> ## 2. >> [aliyun_ecs_c8a.xlarge](https://help.aliyun.com/document_detail/25378.html#c8a) >> * cpu : amd epc genoa (x64) >> >> ``` diff >> -Benchmark (size) Mode Cnt Score Error Units (baseline) >> -Integers.toStringBig 500 avgt 15 6.753 ± 0.007 us/op >> -Integers.toStringSmall 500 avgt 15 4.470 ± 0.005 us/op >> -Integers.toStringTiny 500 avgt 15 2.764 ± 0.020 us/op >> >> +Benchmark (size) Mode Cnt Score Error Units (PR Update >> 04 f4aa1989) >> +Integers.toStringBig 500 avgt 15 5.036 ± 0.005 us/op (+... > > 温绍锦 has updated the pull request incrementally with one additional commit > since the last revision: > > use ByteArrayLittleEndian
The performance test results of the latest version (PR Update 20 [c0f42a7c](https://github.com/openjdk/jdk/pull/14699/files/c0f42a7cfcb3783423689bb05c21b3313d2644f6) ) are as follows: ## 1. [aliyun_ecs_c8i.xlarge](https://help.aliyun.com/document_detail/25378.html#c8i) * cpu : intel xeon sapphire rapids (x64) -Benchmark (size) Mode Cnt Score Error Units (baseline) -Integers.toStringBig 500 avgt 15 6.800 ? 0.022 us/op -Integers.toStringSmall 500 avgt 15 4.792 ? 0.021 us/op -Integers.toStringTiny 500 avgt 15 3.757 ? 0.081 us/op +Benchmark (size) Mode Cnt Score Error Units (PR Update 20 c0f42a7c) +Integers.toStringBig 500 avgt 15 5.894 ? 0.046 us/op (+15.37%) +Integers.toStringSmall 500 avgt 15 4.027 ? 0.012 us/op (+18.99%) +Integers.toStringTiny 500 avgt 15 3.491 ? 0.090 us/op (+7.61%) -Benchmark (size) Mode Cnt Score Error Units (baseline) -Longs.toStringBig 500 avgt 15 9.213 ? 0.019 us/op -Longs.toStringSmall 500 avgt 15 4.550 ? 0.016 us/op +Benchmark (size) Mode Cnt Score Error Units (PR Update 20 c0f42a7c) +Longs.toStringBig 500 avgt 15 7.507 ? 0.011 us/op (+22.72%) +Longs.toStringSmall 500 avgt 15 3.967 ? 0.021 us/op (+14.69%) -Benchmark Mode Cnt Score Error Units (baseline) -StringBuilders.toStringCharWithInt8 avgt 15 89.187 ? 0.236 ns/op +Benchmark Mode Cnt Score Error Units (PR Update 20 c0f42a7c) +StringBuilders.toStringCharWithInt8 avgt 15 36.125 ? 0.309 ns/op (+146.88%) Finished running test 'micro:java.lang.StringBuilders.toStringCharWithInt8' ## 2. [aliyun_ecs_c8y.xlarge](https://help.aliyun.com/document_detail/25378.html#c8y) * cpu : aliyun yitian 710 (aarch64) -Benchmark (size) Mode Cnt Score Error Units (baseline) -Integers.toStringBig 500 avgt 15 11.649 ? 0.011 us/op -Integers.toStringSmall 500 avgt 15 6.985 ? 0.018 us/op -Integers.toStringTiny 500 avgt 15 5.972 ? 0.013 us/op +Benchmark (size) Mode Cnt Score Error Units (PR Update 20 c0f42a7c) +Integers.toStringBig 500 avgt 15 8.957 ? 0.026 us/op (+30.05%) +Integers.toStringSmall 500 avgt 15 6.136 ? 0.018 us/op (+13.83%) +Integers.toStringTiny 500 avgt 15 5.753 ? 0.026 us/op (+3.80%) -Benchmark (size) Mode Cnt Score Error Units (baseline) -Longs.toStringBig 500 avgt 15 14.568 ? 0.021 us/op -Longs.toStringSmall 500 avgt 15 7.250 ? 0.023 us/op +Benchmark (size) Mode Cnt Score Error Units (PR Update 20 c0f42a7c) +Longs.toStringBig 500 avgt 15 13.401 ? 0.012 us/op (+8.70%) +Longs.toStringSmall 500 avgt 15 6.031 ? 0.018 us/op (+20.21%) -Benchmark Mode Cnt Score Error Units (baseline) -StringBuilders.toStringCharWithInt8 avgt 15 52.484 ? 0.534 ns/op +Benchmark Mode Cnt Score Error Units (PR Update 20 c0f42a7c) +StringBuilders.toStringCharWithInt8 avgt 15 40.410 ? 0.348 ns/op (+29.87%) ## 3. MacBookPro M1 Pro -Benchmark (size) Mode Cnt Score Error Units (baseline) -Integers.toStringBig 500 avgt 15 18.483 ± 2.771 us/op -Integers.toStringSmall 500 avgt 15 4.435 ± 0.067 us/op -Integers.toStringTiny 500 avgt 15 2.382 ± 0.063 us/op +Benchmark (size) Mode Cnt Score Error Units (PR Update 20 c0f42a7c) +Integers.toStringBig 500 avgt 15 5.392 ? 0.016 us/op (+242.78%) +Integers.toStringSmall 500 avgt 15 3.201 ? 0.024 us/op (+38.55%) +Integers.toStringTiny 500 avgt 15 2.141 ? 0.021 us/op (+11.25%) -Benchmark (size) Mode Cnt Score Error Units (baseline) -Longs.toStringBig 500 avgt 15 8.336 ± 0.025 us/op -Longs.toStringSmall 500 avgt 15 4.389 ± 0.018 us/op +Benchmark (size) Mode Cnt Score Error Units (PR Update 20 c0f42a7c) +Longs.toStringBig 500 avgt 15 7.706 ? 0.015 us/op (+8.17%) +Longs.toStringSmall 500 avgt 15 3.094 ? 0.021 us/op (+41.85%) -Benchmark Mode Cnt Score Error Units (baseline) -StringBuilders.toStringCharWithInt8 avgt 15 124.316 ± 61.017 ns/op +Benchmark Mode Cnt Score Error Units (PR Update 20 c0f42a7c) +StringBuilders.toStringCharWithInt8 avgt 15 44.497 ? 29.741 ns/op (+179.38%) ------------- PR Comment: https://git.openjdk.org/jdk/pull/14699#issuecomment-1709257471