diff --git a/code/libraries/array/src/main/java/nu/marginalia/array/LongArray.java b/code/libraries/array/src/main/java/nu/marginalia/array/LongArray.java index 7902e05a..05317a05 100644 --- a/code/libraries/array/src/main/java/nu/marginalia/array/LongArray.java +++ b/code/libraries/array/src/main/java/nu/marginalia/array/LongArray.java @@ -43,10 +43,19 @@ public interface LongArray extends LongArrayBase, LongArrayTransformations, Long /** Map an existing file for writing */ static LongArray mmapForModifying(Path path) throws IOException { - return PagingLongArray.mapFileReadWrite(DEFAULT_PARTITIONING_SCHEME, path); + long sizeBytes = Files.size(path); + assert sizeBytes % WORD_SIZE == 0; + + long size = sizeBytes / WORD_SIZE; + + return mmapForWriting(path, size); } static LongArray mmapForWriting(Path path, long size) throws IOException { + if (size < MAX_CONTINUOUS_SIZE) { + return LongArrayPage.fromMmapReadWrite(path, 0, (int) size); + } + return PagingLongArray.mapFileReadWrite(DEFAULT_PARTITIONING_SCHEME, path, size); } diff --git a/code/libraries/array/src/main/java/nu/marginalia/array/page/PagingLongArray.java b/code/libraries/array/src/main/java/nu/marginalia/array/page/PagingLongArray.java index 57961273..c26bafe4 100644 --- a/code/libraries/array/src/main/java/nu/marginalia/array/page/PagingLongArray.java +++ b/code/libraries/array/src/main/java/nu/marginalia/array/page/PagingLongArray.java @@ -62,25 +62,6 @@ public class PagingLongArray extends AbstractPagingArray