RFR: 8336741: Optimize LocalTime.toString with StringBuilder.repeat
Roger Riggs
rriggs at openjdk.org
Thu Jul 18 14:16:35 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.
The "better performance" claim is unsubstantiated. By how much.
The change introduces non-local dependencies that make the code harder to follow. (Shared secrets).
In a typical application, the improvement would not be noticeable and makes the code harder to maintain.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/20232#issuecomment-2236646939
More information about the core-libs-dev
mailing list