On Sat, 3 Jul 2021 00:46:13 GMT, Denghui Dong <dd...@openjdk.org> wrote:
>> Hi, >> >> Could I have a review of this improvement that eliminates 'is_large' check >> if the event size range is certain? >> >> JDK-8246260 introduced event large checks to reduce the recording size. >> This check could be eliminated at compile/build time when one of the >> following conditions is satisfied: >> 1. if the max size is < 128 >> 2. if the min size is >= 128 >> >> The max size and the min size could be computed for the most native events >> at the generation phase. >> >> And I think this improvement may also be done for JDK events. > > Denghui Dong has updated the pull request incrementally with one additional > commit since the last revision: > > refactor Hi Erik, Thanks for the comments. I only measure it on a marco benchmark that sends 100 same jfr native events which contain a uint field. with this patch: Benchmark Mode Samples Score Score error Units o.s.MyBenchmark.testEmit thrpt 20 8251457.275 2707.578 ops/s without this patch: Benchmark Mode Samples Score Score error Units o.s.MyBenchmark.testEmit thrpt 20 6608780.910 5604.914 ops/s I agree with you that this optimization may not affect the overall performance of the application. I think we can do further optimization based on this. For example, in the current implementation, we need to check whether there are enough buffers before writing each field of the event. If the available buffer is greater than the max size of an event, then we only need to check it once. In addition, other current properties, such as hasThrottle, hasStackTrace, are pre-checked at compile time. Therefore, in my opinion, this optimization is necessary. ------------- PR: https://git.openjdk.java.net/jdk/pull/4670