> Speed up Integer.toString with a precomputed cache array of length 1000, use > division by 1000, so that each iteration can calculate three digits. > > this optimization can also be used in StringBuilder#appent(int) and > Long#toString. > > # Benchmark Result > > > bash configure --with-jmh=build/jmh/jars > make test TEST="micro:java.lang.Integers.toString*" > > > ## 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.811 ± 0.016 us/op > -Integers.toStringSmall 500 avgt 15 4.794 ± 0.011 us/op > -Integers.toStringTiny 500 avgt 15 3.752 ± 0.065 us/op > > +Benchmark (size) Mode Cnt Score Error Units (PR Update > 01 3355d211) > +Integers.toStringBig 500 avgt 15 5.148 ± 0.044 us/op (+32.30%) > +Integers.toStringSmall 500 avgt 15 3.820 ± 0.016 us/op (+25.48%) > +Integers.toStringTiny 500 avgt 15 3.426 ± 0.010 us/op (+9.51%) > > +Benchmark (size) Mode Cnt Score Error Units (PR Update > 02 62b499d6) > +Integers.toStringBig 500 avgt 15 5.971 ± 0.014 us/op (+14.06%) > +Integers.toStringSmall 500 avgt 15 4.346 ± 0.016 us/op (+10.30%) > +Integers.toStringTiny 500 avgt 15 3.671 ± 0.019 us/op (+2.20%) > > > ## 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.762 ± 0.018 us/op > -Integers.toStringSmall 500 avgt 15 4.481 ± 0.004 us/op > -Integers.toStringTiny 500 avgt 15 2.761 ± 0.012 us/op > > +Benchmark (size) Mode Cnt Score Error Units (PR Update > 01 3355d211) > +Integers.toStringBig 500 avgt 15 4.901 ± 0.005 us/op (+37.97%) > +Integers.toStringSmall 500 avgt 15 3.515 ± 0.204 us/op (+27.48%) > +Integers.toStringTiny 500 avgt 15 2.698 ± 0.190 us/op (+2.33%) > > +Benchmark (size) Mode Cnt Score Error Units (PR Update > 02 62b499d6) > +Integers.toStringBig 500 avgt 15 5.493 ± 0.007 us/op (+23.10%) > +Integers.toStringSmall 500 avgt 15 3.714 ± 0.006 us/op (+20.65%) > +Integers.toStringTiny 500 avgt 15 2.786 ± 0.015 us/op (-0.89%) > > > > ## 3. > [aliyun_ecs_c8y.xlarge](https://help.aliyun.com/document_detail/25378.html#c8y) > * ...
温绍锦 has updated the pull request incrementally with one additional commit since the last revision: explicitly specify the endianness ------------- Changes: - all: https://git.openjdk.org/jdk/pull/14699/files - new: https://git.openjdk.org/jdk/pull/14699/files/62b499d6..484acc69 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=14699&range=03 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=14699&range=02-03 Stats: 8 lines in 1 file changed: 5 ins; 1 del; 2 mod Patch: https://git.openjdk.org/jdk/pull/14699.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/14699/head:pull/14699 PR: https://git.openjdk.org/jdk/pull/14699