RFR: 8338546: Speed up ConstantPoolBuilder::classEntry(ClassDesc)

Chen Liang liach at openjdk.org
Thu Aug 22 04:58:44 UTC 2024


On Wed, 21 Aug 2024 22:27:02 GMT, Chen Liang <liach at openjdk.org> wrote:

> Speed up `ConstantPoolBuilder::classEntry(ClassDesc)` by going through `ClassDesc` comparison and reusing descriptor hash to calculate internal name hash if possible. No suitable device to run benchmarks so need to find something to run the new benchmark to ensure things work as intended.

Current benchmark results on mac aarch64, where `oldStyleLookup` is the performance of the current `classEntry(ClassDesc)`:

Benchmark                                           Mode  Cnt    Score   Error   Units
ConstantPoolBuildingClassEntry.identicalLookup     thrpt    5  112.603 ± 0.514  ops/ms
ConstantPoolBuildingClassEntry.internalNameLookup  thrpt    5  239.761 ± 0.190  ops/ms
ConstantPoolBuildingClassEntry.nonIdenticalLookup  thrpt    5  169.954 ± 0.606  ops/ms
ConstantPoolBuildingClassEntry.oldStyleLookup      thrpt    5   81.993 ± 4.942  ops/ms

Windows x64:

Benchmark                                           Mode  Cnt    Score   Error   Units
ConstantPoolBuildingClassEntry.identicalLookup     thrpt    5  134.546 ± 0.835  ops/ms
ConstantPoolBuildingClassEntry.internalNameLookup  thrpt    5  201.743 ± 1.236  ops/ms
ConstantPoolBuildingClassEntry.nonIdenticalLookup  thrpt    5  134.512 ± 1.655  ops/ms
ConstantPoolBuildingClassEntry.oldStyleLookup      thrpt    5   78.647 ± 0.370  ops/ms

For some reason identity matching case hurts, but the other x64 platforms are much less affected. @cl4es would you know why these compiled benchmarks would behave so?

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

PR Comment: https://git.openjdk.org/jdk/pull/20667#issuecomment-2303783382


More information about the core-libs-dev mailing list