On Tue, 17 Sep 2024 02:04:51 GMT, Chen Liang <li...@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.
>
> Chen Liang has updated the pull request with a new target base due to a merge 
> or a rebase. The pull request now contains 15 commits:
> 
>  - Fix build
>  - Merge branch 'master' of https://github.com/openjdk/jdk into 
> feature/classentry-speedup
>  - Buggy 2nd attempt - crashes hotspot
>  - Merge branch 'master' of https://github.com/openjdk/jdk into 
> feature/classentry-speedup
>  - Merge branch 'master' of https://github.com/openjdk/jdk into 
> feature/classentry-speedup
>  - More conflicts
>  - Merge branch 'master' of https://github.com/openjdk/jdk into 
> feature/classentry-speedup
>  - Merge branch 'master' of https://github.com/openjdk/jdk into 
> feature/classentry-speedup
>  - Merge branch 'master' of https://github.com/openjdk/jdk into 
> feature/classentry-speedup
>  - Another bug in benchmark
>  - ... and 5 more: https://git.openjdk.org/jdk/compare/996790c7...6117a5bd

Current benchmark numbers:
Baseline:

Benchmark                                           Mode  Cnt     Score     
Error   Units
ConstantPoolBuildingClassEntry.identicalLookup     thrpt    5   649.643 ±   
5.226  ops/ms
ConstantPoolBuildingClassEntry.internalNameLookup  thrpt    5  2389.365 ± 
382.997  ops/ms
ConstantPoolBuildingClassEntry.nonIdenticalLookup  thrpt    5   650.280 ±   
3.360  ops/ms
ConstantPoolBuildingClassEntry.oldStyleLookup      thrpt    5   695.891 ±  
10.246  ops/ms

Patch:

Benchmark                                           Mode  Cnt     Score     
Error   Units
ConstantPoolBuildingClassEntry.identicalLookup     thrpt    5  2394.541 ± 
148.267  ops/ms  268.59%
ConstantPoolBuildingClassEntry.internalNameLookup  thrpt    5  1506.351 ±  
21.757  ops/ms  -36.96%
ConstantPoolBuildingClassEntry.nonIdenticalLookup  thrpt    5  1908.198 ±  
31.008  ops/ms  193.44%
ConstantPoolBuildingClassEntry.oldStyleLookup      thrpt    5   545.962 ±  
10.603  ops/ms  -21.54%


In short, this patch is based on the assumption that ClassEntry lookup via 
`ClassDesc` is way more prevalent than that via a `Utf8Entry`; this is true for 
JDK and we would recommend all ClassFile API users to follow suit of using 
pre-validated symbols.

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

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

Reply via email to