On Tue, 10 Oct 2023 08:07:37 GMT, Chen Liang <li...@openjdk.org> wrote:

>> By extracting the code that creates the exception, the CodeSize of these 
>> methods is less than the default FreqInlineSize 325.  and for the scenario 
>> where the most commonly used radix is not specified and the String coder is 
>> LATIN1, fast-path can improves the performance 10% of 
>> parseInt(String)/parseLong(String).
>
> src/java.base/share/classes/java/lang/Integer.java line 682:
> 
>> 680:      */
>> 681:     public static int parseInt(String s) throws NumberFormatException {
>> 682:         if (s != null && s.coder() == String.LATIN1) {
> 
> Does this code block actually speed up `parseInt`? I recommend you remove 
> this code block and test `parseInt` and `parseLong` again only with new 
> NumberFormatException factories.

parseInt & parseLong are accelerated by this code, the key code is here

class DecimalDigits {
    public static int digit(byte ch) {
        return DIGITS_LATIN1[ch & 0xFF]; // If remove & 0xFF it won't get faster
    }
}


This optimization can only be done when radix is fixed.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/16112#discussion_r1352076040

Reply via email to