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

Looking into this I see that `internalNameHash` (and `pow31`) shows up in 
startup profiles - making the change more or less neutral on bytecode counts. 
`pow31` seem to be a contributor to the regression in the `internalNameLookup` 
micro.

Since most common internal names are relatively small (`java/lang/String` etc) 
I wonder if a small memoized lookup table is profitable? Ran with a naive one 
containing pow31(0 - 63) and see a 1.08x speedup in `internalNameLookup`.

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

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

Reply via email to