RFR: 8196331: Optimize Character.digit for latin1 input (original) (raw)

Paul Sandoz paul.sandoz at oracle.com
Mon Jan 29 18:14:44 UTC 2018


On Jan 29, 2018, at 9:44 AM, Martin Buchholz <martinrb at 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.redestad at 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



More information about the core-libs-dev mailing list