RFR: 8335366: Improve String.format performance with fastpath [v2]

Shaojin Wen duke at openjdk.org
Sat Jun 29 17:23:18 UTC 2024


On Sat, 29 Jun 2024 16:17:32 GMT, David Schlosnagle <duke at openjdk.org> wrote:

>> Shaojin Wen has updated the pull request incrementally with four additional commits since the last revision:
>> 
>>  - Update src/java.base/share/classes/java/lang/StringFormat.java
>>    
>>    Co-authored-by: David Schlosnagle <schlosna at gmail.com>
>>  - Update src/java.base/share/classes/java/lang/StringFormat.java
>>    
>>    Co-authored-by: David Schlosnagle <schlosna at gmail.com>
>>  - Update src/java.base/share/classes/java/lang/StringFormat.java
>>    
>>    Co-authored-by: David Schlosnagle <schlosna at gmail.com>
>>  - Update src/java.base/share/classes/java/lang/StringFormat.java
>>    
>>    Co-authored-by: David Schlosnagle <schlosna at gmail.com>
>
> src/java.base/share/classes/java/lang/StringFormat.java line 110:
> 
>> 108:             width0 = conv0 - '0';
>> 109:             if (off0 + 2 < max) {
>> 110:                 conv0 = format.charAt(off0 + 2);
> 
> is it worth handling `width0 > 9`?
> 
> Suggestion:
> 
>         for (int i = 2; conv0 >= '1' && conv0 <= '9' && off0 + i < max; i++) {
>             width0 = (width0 * 10) + (conv0 - '0');
>             if (off0 + i < max) {
>                 conv0 = format.charAt(off0 + i);

This is the fastpath code. I think it doesn't need to handle width > 9. Keep it small enough to reduce the fallback cost and leave room for supporting more others.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/19956#discussion_r1659912461


More information about the core-libs-dev mailing list