RFR: 8310929: Optimization for Integer.toString [v7]

温绍锦 duke at openjdk.org
Fri Jun 30 11:16:10 UTC 2023


> 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.toStringCharWithInt*"
> 
> 
> ## 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 (baseline)
> -Longs.toStringBig       500  avgt   15  9.224 ± 0.021  us/op
> -Longs.toStringSmall     500  avgt   15  4.621 ± 0.087  us/op
> 
> -Benchmark                           Mode  Cnt     Score    Error  Units (baseline)
> -StringBuilders.toStringCharWithInt8 avgt   15    89.327 ±  0.733  ns/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 (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 (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 (baseline)
> -Longs.toStringBig       500  avgt   15  10.087 ± 0.016  us/op
> -Longs.toStringSmall     500  avgt   15   4.231 ± 0.068  us/op
> 
> -Benchmark                           Mode  Cnt     Score    Error...

温绍锦 has updated the pull request incrementally with one additional commit since the last revision:

  format code & comment

-------------

Changes:
  - all: https://git.openjdk.org/jdk/pull/14699/files
  - new: https://git.openjdk.org/jdk/pull/14699/files/d1edd3ee..846cb22b

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=14699&range=06
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=14699&range=05-06

  Stats: 4 lines in 2 files changed: 0 ins; 0 del; 4 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


More information about the core-libs-dev mailing list