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