> 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 refreshed the contents of this pull request, and previous commits have been removed. The incremental views will show differences compared to the previous content of the PR. The pull request contains one new 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% ------------- Changes: - all: https://git.openjdk.org/jdk/pull/22919/files - new: https://git.openjdk.org/jdk/pull/22919/files/1a885c85..2ea91b05 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=22919&range=28 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=22919&range=27-28 Stats: 0 lines in 0 files changed: 0 ins; 0 del; 0 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
