From 170d9662e96a3d9b349abb3030559205e4f17fff Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Mon, 17 Jul 2023 09:26:18 +0200 Subject: [PATCH] Polishing #2445 Refine list preallocation size. --- src/main/java/io/lettuce/core/dynamic/SimpleBatcher.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/io/lettuce/core/dynamic/SimpleBatcher.java b/src/main/java/io/lettuce/core/dynamic/SimpleBatcher.java index 8967f9b107..7106d22003 100644 --- a/src/main/java/io/lettuce/core/dynamic/SimpleBatcher.java +++ b/src/main/java/io/lettuce/core/dynamic/SimpleBatcher.java @@ -89,7 +89,7 @@ protected BatchTasks flush(boolean forcedFlush) { boolean defaultFlush = false; - List> commands = new ArrayList<>(Math.max(batchSize, 10)); + List> commands = newDrainTarget(); while (flushing.compareAndSet(false, true)) { @@ -147,7 +147,7 @@ protected BatchTasks flush(boolean forcedFlush) { private List> prepareForceFlush() { - List> batch = new ArrayList<>(Math.max(batchSize, 10)); + List> batch = newDrainTarget(); while (!queue.isEmpty()) { @@ -163,7 +163,7 @@ private List> prepareForceFlush() { private List> prepareDefaultFlush(int consume) { - List> batch = new ArrayList<>(Math.max(consume, 10)); + List> batch = newDrainTarget(); while ((batch.size() < consume || consume == -1) && !queue.isEmpty()) { @@ -177,4 +177,7 @@ private List> prepareDefaultFlush(int consu return batch; } + private ArrayList newDrainTarget() { + return new ArrayList<>(Math.max(0, Math.min(batchSize, queue.size()))); + } }