RFR: 8336741: Optimize LocalTime.toString with StringBuilder.repeat
Shaojin Wen
duke at openjdk.org
Thu Jul 18 13:54:31 UTC 2024
On Thu, 18 Jul 2024 11:32:47 GMT, Shaojin Wen <duke at openjdk.org> wrote:
> 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.
printFixedWidth cannot meet the needs of append nanos, For example, if the value is 1000, the output is `.000001`, not `.000001000`
-------------
PR Comment: https://git.openjdk.org/jdk/pull/20232#issuecomment-2236588022
More information about the core-libs-dev
mailing list