On Wed, 27 Sep 2023 04:16:11 GMT, Roger Riggs <[email protected]> wrote:
> ok, but perhaps you can shrink it further, if it does not hurt performance,
> by subtracting 0x20 before indexing and cut the table to 64 bytes.
If you use DIGITS of size 54, performance will be 10% slower, The code is
written like this:
public final class HexFormat {
private static final byte[] DIGITS = {
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
// remove 128 - 255
};
public static boolean isHexDigit(int ch) {
// unsigned right shift 8 change to 7
return (ch >= '0' && ch <= 'f' && DIGITS[ch - '0'] >= 0);
}
public static int fromHexDigit(int ch) {
int value;
// unsigned right shift 8 change to 7
if (ch >= '0' && ch <= 'f' && (value = DIGITS[ch - '0']) >= 0)
...
}
}
-------------
PR Comment: https://git.openjdk.org/jdk/pull/15768#issuecomment-1737001849