> 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 >>