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