Smaller in only the upper bound? I would an explicit upper bounds check would dominate that of the bounds check for the array itself.
Paul. > On Jan 29, 2018, at 11:37 AM, Claes Redestad <claes.redes...@oracle.com> > wrote: > > 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/ > <http://cr.openjdk.java.net/~redestad/8196331/open.00/> > Bug: https://bugs.openjdk.java.net/browse/JDK-8196331 > <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.