RFR: 8365199: Use a set instead of a list as the intermediary Klass* storage to reduce typeset processing [v7]

Erik Gahlin egahlin at openjdk.org
Thu Aug 14 14:51:13 UTC 2025


On Thu, 14 Aug 2025 14:34:57 GMT, Markus Grönlund <mgronlun at openjdk.org> wrote:

>> Greetings,
>> 
>> This change set is a performance improvement to speed up JFR typeset processing.
>> 
>> It accomplishes this by using a set instead of a list as the intermediary Klass* storage.
>> 
>> Further, the existing JfrSet implementation (currently backed by a linked-list ResizeableResourceHashTable) is optimized to use instead a slimmed open-addressing implementation, premised on the invariant that our sets are key sets. 
>> 
>> Running the test program attached to the JIRA issue results in a 100% performance improvement in total running time (by reducing the work set of Klass: es being processed by the JFR Recorder Thread).
>> 
>> Testing: jdk_jfr, stress tests
>> 
>> Thanks
>> Markus
>
> Markus Grönlund has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 10 commits:
> 
>  - Merge branch 'master' of https://git.openjdk.org/jdk into 8365199
>  - merge error
>  - Merge branch '8365199' of github.com:mgronlun/jdk into 8365199
>  - less than or equal to max_initial_size
>  - use load factor instead of probe sequence
>  - const
>  - increase possible maxsize and extend probe sequence
>  - improved typedef usage and static assert
>  - adjustment
>  - 8365199

Looks good.

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

Marked as reviewed by egahlin (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/26733#pullrequestreview-3120901943


More information about the hotspot-jfr-dev mailing list