RFR: 8306842: Classfile API performance improvements [v5]
Adam Sotona
asotona at openjdk.org
Mon May 15 14:48:58 UTC 2023
> Following improvements implemented:
> - Switch over `String` replaced with switch single char
> - Binary search for frames in `StackMapGenerator`
> - `StackMapGenerator.rawHandlers` with pre-calculated offsets
> - `ClassEntry` is caching `ClassDesc` symbol
> - Caching of type symbols in `NameAndTypeEntry` and `MethodTypeEntry`
> - Caching `MethodTypeDesc` in `MethodInfo` implementations
> - `StackMapGenerator` and `Utils` delegating to cached `MethodTypeDesc` instead of custom parsing
>
> No API change.
>
> Benchmarks show stack map generation improved by 21% and code generation from symbols improved by 30%.
>
>
> Benchmark Mode Cnt Score Error Units
> GenerateStackMaps.benchmark thrpt 10 407931.202 ± 13101.023 ops/s
> RebuildMethodBodies.shared thrpt 4 10258.597 ± 383.699 ops/s
> RebuildMethodBodies.unshared thrpt 4 7224.543 ± 256.800 ops/s
>
>
>
> Benchmark Mode Cnt Score Error Units
> GenerateStackMaps.benchmark thrpt 10 495101.110 ± 2389.628 ops/s
> RebuildMethodBodies.shared thrpt 4 13380.272 ± 810.113 ops/s
> RebuildMethodBodies.unshared thrpt 4 9399.863 ± 557.060 ops/s
Adam Sotona has updated the pull request incrementally with two additional commits since the last revision:
- changed LinkedList to ArrayList in RebuildMethodBodies benchmark
- added RepeatedModelTraversal JMH benchmark
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/13671/files
- new: https://git.openjdk.org/jdk/pull/13671/files/3cbb11c2..3b299727
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=13671&range=04
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=13671&range=03-04
Stats: 74 lines in 2 files changed: 71 ins; 0 del; 3 mod
Patch: https://git.openjdk.org/jdk/pull/13671.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/13671/head:pull/13671
PR: https://git.openjdk.org/jdk/pull/13671
More information about the core-libs-dev
mailing list