RFR: 7264: Improve the performance of the JFR parser [v2]

Erik Gahlin egahlin at openjdk.java.net
Wed Jun 16 18:44:17 UTC 2021


On Mon, 14 Jun 2021 21:22:01 GMT, Jean-Philippe Bempel <jpbempel at openjdk.org> wrote:

>> When parsing a JFR file, StackFrames are the objects that are the most
>> deserialized using Readers.
>> By default, JMC core parser used a generic ReflectiveReaders
>> which use reflection to parser the structure. However, we have known
>> objects like stack frames where we could directly map to the typed
>> object instead on relying on reflection, which speed up significantly
>> the parsing.
>> 
>> Here the results for c5.2xlarge instance single threaded parsing with 24MB jfr recording with 100 iterations:
>> 
>> | runs | baseline | specific readers optim | improvement |
>> | --- | --- | --- | --- |
>> | run 1 | 54,317ms | 39,623ms | -27% |
>> | run 2 | 54,988ms | 39,520ms | -28% |
>> | run 3 | 54,209ms | 39,904ms | -26% |
>
> Jean-Philippe Bempel has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Make sure field index match field name
>   
>   if unexpected field, fallbacks to reflective way

Looks reasonable, even though the code will not handle removal of a field, but it's perhaps not as likely, and may fail anyway in the UI layer.

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

Marked as reviewed by egahlin (Reviewer).

PR: https://git.openjdk.java.net/jmc/pull/266


More information about the jmc-dev mailing list