On Wed, 30 Sep 2020 10:22:11 GMT, Conor Cleary <ccle...@openjdk.org> wrote:

> This patch replaces a LinkedList data structure used in the 
> net.http.Http2Connection class with an ArrayList. This
> issue relates to [JDK-8246048: Replace LinkedList with ArrayLists in
> java.net](https://bugs.openjdk.java.net/browse/JDK-8246048).  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
>   memory neighborhood)
> - 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), these 
> operations appear to be
>   infrequent/non-existent in this case.
> 
> Additional justifications or challenges to those listed are welcome! The 
> general idea is that ArrayLists out-perform
> LinkedLists in this scenario.

src/java.net.http/share/classes/jdk/internal/net/http/Http2Connection.java line 
703:

> 701:         if (initialCause == null) this.cause = t;
> 702:         client2.deleteConnection(this);
> 703:         List<Stream<?>> c = new ArrayList<>(streams.values());

Why can't we dispense with this copy completely, and instead just iterate 
`streams.values()`?

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

PR: https://git.openjdk.java.net/jdk/pull/431

Reply via email to