RFR[8246047]: 'Replace LinkedList impl in net.http.websocket.BuilderImpl'
Conor Cleary
conor.cleary at oracle.com
Fri Aug 14 15:48:16 UTC 2020
Thanks for the suggestion Daniel, looks much nicer without the casting
in the immutableCopy function as well!
I made a new patch with those reverted changes and it looks much nicer
and still behaves as expected.
webrev:
http://cr.openjdk.java.net/~ccleary/issues/webrevs-store/8246047/webrevs/webrev.03/
Thanks!
Conor
On 14/08/2020 15:49, Daniel Fuchs wrote:
> Hi Conor,
>
> Thanks for addressing this technical debt.
>
> I don't think this is correct. You transformed the immutable
> copy at line 137 into a shallow clone, since now both copies
> share the same mutable list.
>
> I suggest to revert the changes at lines:
>
> 66,67,144 and 145.
>
> (and that will be much simpler in the bargain :-) )
>
> best regards,
>
> -- daniel
>
>
> On 14/08/2020 15:37, Conor Cleary wrote:
>> Hi all,
>>
>> Requesting some reviewers for a patch concerning JDK-8246047 'Replace
>> LinkedList impl in net.http.websocket.BuilderImpl'. This patch
>> replaces LinkedList data structures used in the net.http.websocket
>> BuilderImpl class with ArrayLists. In particular, the 'headers' and
>> 'subprotocols' Collections in the class are now assigned ArrayLists
>> in the BuilderImpl constructors.
>>
>> Some justifications for this change are as follows:
>>
>> * Sequential Access Times for ArrayLists are improved due to locality
>> of reference (i.e ArrayList elements stored in same neighbourhood)
>> * Get(index) operations are O(1) time complexity for ArrayLists as
>> opposed to worst-case O(N-1) for LinkedLists
>> * While insertion operations can be expensive (O(N) in the worst
>> case), the 'headers' and 'subprotocols' lists are not modified after
>> creation and so this is of minor concern
>>
>> Additional justifications or challenges to them are welcome! The
>> general idea is that ArrayLists out-perform LinkedLists in this
>> particular scenario.
>>
>> * webrev:
>> http://cr.openjdk.java.net/~ccleary/issues/webrevs-store/8246047/webrevs/webrev.02/
>> * bug: https://bugs.openjdk.java.net/browse/JDK-8246047
>>
>>
>> Conor
>>
>
More information about the net-dev
mailing list