RFR: 8306842: Classfile API performance improvements [v4]

Adam Sotona asotona at openjdk.org
Mon May 15 10:03:50 UTC 2023


On Fri, 12 May 2023 13:19:44 GMT, Chen Liang <liach at openjdk.org> wrote:

>> Adam Sotona has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   fixed jmh benchmark parameters
>
> test/micro/org/openjdk/bench/jdk/classfile/RebuildMethodBodies.java line 57:
> 
>> 55:     public void setup() throws IOException {
>> 56:         shared = new LinkedList<>();
>> 57:         unshared = new LinkedList<>();
> 
> LinkedList should be replaced by ArrayList, as:
> 1. LinkedList's node wrapper around each object is too heavy, ArrayList has smaller wrapper
> 2. LinkedList iteration needs to follow links while ArrayList access can be machine optimized
> 3. ArrayList addition is amortized O(1), not really worse than LinkedList additions.

Construction size is irrelevant here as each node holds the whole expanded `ClassModel` instances.
`LinkedList` iterator `next` speed is O(1) and possible `AraryList` optimisations of the test data iterator have no effect on this benchmark. 
Construction speed of `ArrayList` is not O(1) when the `grow` method is called, however it is also irrelevant as this is unmeasured setup part of the benchmark.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/13671#discussion_r1193614917


More information about the core-libs-dev mailing list