RFR: 8263038: Optimize String.format for simple specifiers [v2]

Naoto Sato naoto at openjdk.java.net
Mon Mar 8 17:26:10 UTC 2021


On Mon, 8 Mar 2021 16:00:27 GMT, Claes Redestad <redestad at openjdk.org> wrote:

>> This patch optimizes String.format expressions that uses trivial specifiers. In the JDK, the most common variation of String.format is a variation of format("foo: %s", s), which gets a significant speed-up from this.
>> 
>> Various other cleanups and minor improvements reduce overhead further and ensure we get a small gain also for more complex format strings.
>
> Claes Redestad has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Lazily evaluate zero

src/java.base/share/classes/java/util/Formatter.java line 2447:

> 2445:     private char zero() {
> 2446:         char zero = this.zero;
> 2447:         if (zero == 0) {

U+0000 is a valid character. Although it's almost no possibility where any locale assigns it as the zero in it, theoretically it is possible. It can be avoided by comparing it with a non-character, such as BOM (U+FFFE)

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

PR: https://git.openjdk.java.net/jdk/pull/2830


More information about the core-libs-dev mailing list