On Fri, 30 Aug 2024 05:24:58 GMT, Shaojin Wen <s...@openjdk.org> wrote:
>> Use fast path for ascii characters 1 to 127 to improve the performance of >> writing Utf8Entry to BufferWriter. > > Shaojin Wen has updated the pull request incrementally with one additional > commit since the last revision: > > add comments Do you have any benchmark numbers of note to support this? src/java.base/share/classes/java/lang/StringCoding.java line 37: > 35: private StringCoding() { } > 36: > 37: public static boolean hasNegativeOrZeros(byte[] ba) { Wait a second.. since you're only interested in and calling this when `s.coder == LATIN1` then values can't be negative. Which means all you really need is something like this: public static boolean isLatin1WithNoZeros(String s) { return s.isLatin() && s.indexOf(0) < 0; } `indexOf` have intrinsic support and might perform better than a simple for-loop. src/java.base/share/classes/java/lang/System.java line 2598: > 2596: > 2597: public boolean hasNegativeOrZeros(String s) { > 2598: return s.coder() == String.UTF16 || > StringCoding.hasNegativeOrZeros(s.value()); Avoid adding logic to methods in `*Access` bridges, define `hasNonPositives(String s)` (or `isLatin1WithNoZeros(String)`) in `StringCoding` instead. ------------- Changes requested by redestad (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/20772#pullrequestreview-2272579498 PR Review Comment: https://git.openjdk.org/jdk/pull/20772#discussion_r1738816044 PR Review Comment: https://git.openjdk.org/jdk/pull/20772#discussion_r1738821539