On Fri, 5 Mar 2021 16:36:03 GMT, Roger Riggs <rri...@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. > > src/java.base/share/classes/java/util/Formatter.java line 3017: > >> 3015: s = ((Character)arg).toString(); >> 3016: } else if (arg instanceof Byte) { >> 3017: byte i = (Byte) arg; > > Can the pattern matching for instanceof be used here to remove explicit > casts. (Supported in JDK 16) > s = null; > if (arg instanceof Character c) { > s = c.toString(); > } else if (arg instanceof Byte i) { > if (Character.isValidCodePoint(i)) > s = new String(Character.toChars(i)); > else > throw new IllegalFormatCodePointException(i); > } else if (arg instanceof Short i) { > if (Character.isValidCodePoint(i)) > s = new String(Character.toChars(i)); > else > throw new IllegalFormatCodePointException(i); > } ``` > etc.. I did think about it, but it seemed to stray a bit too far from the intent of this enhancement. ------------- PR: https://git.openjdk.java.net/jdk/pull/2830