RFR: 8336741: Optimize LocalTime.toString with StringBuilder.repeat [v2]

Shaojin Wen duke at openjdk.org
Thu Jul 18 15:19:49 UTC 2024


> class LocalTime {
>     public String toString() {
>         // ...
>                 if (nanoValue % 1000_000 == 0) {
>                     buf.append(Integer.toString((nanoValue / 1000_000) + 1000).substring(1));
>                 } else if (nanoValue % 1000 == 0) {
>                     buf.append(Integer.toString((nanoValue / 1000) + 1000_000).substring(1));
>                 } else {
>                     buf.append(Integer.toString((nanoValue) + 1000_000_000).substring(1));
>                 }
>        // ...
>     }
> }
> 
> Currently, LocalTime.toString handles nanos by adding a value and then subString(1) to fill it with zeros. Using StringBuilder.repeat is more concise and has better performance.

Shaojin Wen has updated the pull request incrementally with two additional commits since the last revision:

 - add benchmark
 - remove JLA

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/20232/files
  - new: https://git.openjdk.org/jdk/pull/20232/files/aa0af2fa..ac302761

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=20232&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=20232&range=00-01

  Stats: 154 lines in 3 files changed: 150 ins; 2 del; 2 mod
  Patch: https://git.openjdk.org/jdk/pull/20232.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/20232/head:pull/20232

PR: https://git.openjdk.org/jdk/pull/20232


More information about the core-libs-dev mailing list