From 88f7abfc918c02749022abfb12b1decbd17b7b23 Mon Sep 17 00:00:00 2001 From: Andreas Huber Date: Sat, 7 Nov 2020 08:45:51 +0100 Subject: [PATCH] inline of array in LongQueue by creating a getting a reference to the array of LongList --- .../org/lucares/collections/LongList.java | 4 ++++ .../collections/MultiwayLongMerger.java | 21 +++++++++++-------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/primitiveCollections/src/main/java/org/lucares/collections/LongList.java b/primitiveCollections/src/main/java/org/lucares/collections/LongList.java index e705766..8586471 100644 --- a/primitiveCollections/src/main/java/org/lucares/collections/LongList.java +++ b/primitiveCollections/src/main/java/org/lucares/collections/LongList.java @@ -669,6 +669,10 @@ public final class LongList implements Serializable, Cloneable { System.arraycopy(data, 0, input, 0, size); return input; } + + long[] getArrayInternal() { + return data; + } /** * Sorts the list into ascending order. diff --git a/primitiveCollections/src/main/java/org/lucares/collections/MultiwayLongMerger.java b/primitiveCollections/src/main/java/org/lucares/collections/MultiwayLongMerger.java index 58df30f..6e30ec6 100644 --- a/primitiveCollections/src/main/java/org/lucares/collections/MultiwayLongMerger.java +++ b/primitiveCollections/src/main/java/org/lucares/collections/MultiwayLongMerger.java @@ -11,40 +11,43 @@ class MultiwayLongMerger { static class LongQueue { private static final LongQueue EMPTY = new LongQueue(LongList.of()); - final LongList wrapped; + final long[] wrapped; int offset = 0; + private int size; + public LongQueue(LongList wrapped) { - this.wrapped = wrapped; + this.wrapped = wrapped.getArrayInternal(); + this.size = wrapped.size(); } boolean isEmpty() { - return offset >= wrapped.size(); + return offset >= size; } long pop() { - assert offset < wrapped.size(); - final long result = wrapped.get(offset); + assert offset < size; + final long result = wrapped[offset]; offset++; return result; } public long peek() { - return wrapped.get(offset); + return wrapped[offset]; } public long peekLast() { - return wrapped.get(wrapped.size() - 1); + return wrapped[size - 1]; } @Override public String toString() { - return wrapped.sublist(offset).toString(); + return Arrays.toString(Arrays.copyOfRange(wrapped, offset, size)); } public int size() { - return wrapped.size() - offset; + return size - offset; } }