From 69d99c91dd1739564103e7a3c89c8296947df653 Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Sun, 29 Sep 2024 17:20:49 +0200 Subject: [PATCH] (index) Optimize buffer handling in PrioDocIdsTransformer --- .../index/construction/prio/PrioDocIdsTransformer.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/code/index/index-reverse/java/nu/marginalia/index/construction/prio/PrioDocIdsTransformer.java b/code/index/index-reverse/java/nu/marginalia/index/construction/prio/PrioDocIdsTransformer.java index 92c3b8aa..4ecb1cb3 100644 --- a/code/index/index-reverse/java/nu/marginalia/index/construction/prio/PrioDocIdsTransformer.java +++ b/code/index/index-reverse/java/nu/marginalia/index/construction/prio/PrioDocIdsTransformer.java @@ -57,6 +57,13 @@ public class PrioDocIdsTransformer implements LongArrayTransformations.LongIOTra readChannel.read(readBuffer); readBuffer.flip(); + if (writeBuffer.remaining() < 32) { + writeBuffer.flip(); + int written = writeChannel.write(writeBuffer, writeOffsetB); + writeOffsetB += written; + writeBuffer.clear(); + } + if (!wroteHeader) { // write 11b header bitWriter.putBits(3, 2); @@ -78,7 +85,7 @@ public class PrioDocIdsTransformer implements LongArrayTransformations.LongIOTra } while (readBuffer.hasRemaining()) { - if (writeBuffer.remaining() < 16) { + if (writeBuffer.remaining() < 32) { writeBuffer.flip(); int written = writeChannel.write(writeBuffer, writeOffsetB); writeOffsetB += written;