> This is an optimization for decimal Integer.parseInt and Long.parseLong, 
> which improves performance by about 10%. The optimization includes:
> 1. Improve performance by parsing 2 numbers at a time, which has performance 
> improvements for numbers with length >= 3.
> 2. It uses charAt(0) for the first number. Assuming that the optimization can 
> eliminate boundary checks, this will be more friendly to parsing numbers with 
> length 1.
> 3. It removes the reliance on the Character.digit method and eliminates the 
> reliance on the CharacterDataLatin1#DIGITS cache array, which avoids 
> performance degradation caused by cache misses.

Shaojin Wen has updated the pull request incrementally with one additional 
commit since the last revision:

  Optimize parseInt/parseLong by inlining digit2 logic
  
  - Inline DecimalDigits.digit2() to avoid method call overhead
  - Remove dependency on lookup tables, use direct calculation
  - Simplify conditional checks in parsing loops
  - CodeSize remains < 325 (JIT inlineable)
  - Performance: Integer.parseInt +6.7%, Long.parseLong +7.1%
  
  Co-authored-by: Qwen-Coder <[email protected]>

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/22919/files
  - new: https://git.openjdk.org/jdk/pull/22919/files/54a2cbee..1a885c85

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=22919&range=27
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=22919&range=26-27

  Stats: 24 lines in 2 files changed: 12 ins; 0 del; 12 mod
  Patch: https://git.openjdk.org/jdk/pull/22919.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/22919/head:pull/22919

PR: https://git.openjdk.org/jdk/pull/22919

Reply via email to