I ran with a smaller byte[] initially and saw about a 10% improvement from removing the branch, which is why I felt the superfluous bytes were motivated.
/Claes Paul Sandoz <paul.san...@oracle.com> skrev: (29 januari 2018 19:14:44 CET) > > >> On Jan 29, 2018, at 9:44 AM, Martin Buchholz <marti...@google.com> >wrote: >> >> Thanks. I might try to shrink the size of the static array, by only >> storing values between '0' and 'z', at the cost of slightly greater >lookup >> costs for each char. >> > >I was wondering the same, or just clip the end of the array to’z' > >if (ch <= ‘z’ && radix …) { // Might even fold the upper bounds check >for DIGITS > value = DIGITS[ch]; > ... >} > >Paul. > >> On Mon, Jan 29, 2018 at 3:15 AM, Claes Redestad ><claes.redes...@oracle.com> >> wrote: >> >>> Hi, >>> >>> for the latin1 block of CharacterData we can improve the >>> digit(int, int) implementation by providing an optimized lookup >>> table. This improves microbenchmarks exercising Integer.parseInt, >>> Long.parseLong and UUID.fromString etc by around 50%for typical >>> inputs. >>> >>> Webrev: http://cr.openjdk.java.net/~redestad/8196331/open.00/ >>> Bug: https://bugs.openjdk.java.net/browse/JDK-8196331 >>> >>> The lookup array is pre-calculated to minimize startup impact >>> (adds 1,027 bytecodes executed during initialization) >>> >>> /Claes >>> -- Sent from my Android device with K-9 Mail. Please excuse my brevity.