RFR: 8310929: Optimization for Integer.toString [v21]
温绍锦
duke at openjdk.org
Wed Sep 6 23:36:43 UTC 2023
On Wed, 6 Sep 2023 22:22:12 GMT, 温绍锦 <duke at 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
More information about the core-libs-dev
mailing list