On Tue, 19 Sep 2023 14:30:18 GMT, 温绍锦 <d...@openjdk.org> wrote:
>> In the improvement of @cl4es PR #15591, the advantages of non-lookup-table >> were discussed. >> >> But if the input is byte[], using lookup table can improve performance. >> >> For HexFormat#formatHex(Appendable, byte[]) and HexFormat#formatHex(byte[]), >> If the length of byte[] is larger, the performance of table lookup will be >> improved more obviously. > > 温绍锦 has updated the pull request incrementally with one additional commit > since the last revision: > > fix typo HexFormat.DIGITS now uses 256-length byte[], which can be changed to 128-length. This is a small change. Should it be changed in the current PR? public final class HexFormat { private static final byte[] DIGITS = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, -1, -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // remove 128 - 255 }; public static boolean isHexDigit(int ch) { // unsigned right shift 8 change to 7 return ((ch >>> 7) == 0 && DIGITS[ch] >= 0); } public static int fromHexDigit(int ch) { int value; // unsigned right shift 8 change to 7 if ((ch >>> 7) == 0 && (value = DIGITS[ch]) >= 0) ... } } ------------- PR Comment: https://git.openjdk.org/jdk/pull/15768#issuecomment-1736630070