Skip to content

Commit 3b87d7d

Browse files
committed
JImmutableBtreeList.of() uses wider branch nodes.
1 parent 4768e42 commit 3b87d7d

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

src/main/java/org/javimmutable/collections/btree_list/JImmutableBtreeList.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ public class JImmutableBtreeList<T>
6060
implements JImmutableRandomAccessList<T>
6161
{
6262
private static final JImmutableBtreeList<Object> EMPTY = new JImmutableBtreeList<>(BtreeEmptyNode.of());
63+
private static final int BUILDER_CHILDREN_PER_NODE = Math.max(BtreeNode.MIN_CHILDREN, BtreeNode.MAX_CHILDREN - 2);
6364

6465
private final BtreeNode<T> root;
6566

@@ -96,9 +97,9 @@ public static <T> JImmutableBtreeList<T> of(@Nonnull Indexed<? extends T> values
9697
remaining = 0;
9798
offset = nodeCount;
9899
} else {
99-
node = BtreeLeafNode.of(values, offset, offset + BtreeNode.MIN_CHILDREN);
100-
remaining -= BtreeNode.MIN_CHILDREN;
101-
offset += BtreeNode.MIN_CHILDREN;
100+
node = BtreeLeafNode.of(values, offset, offset + BUILDER_CHILDREN_PER_NODE);
101+
remaining -= BUILDER_CHILDREN_PER_NODE;
102+
offset += BUILDER_CHILDREN_PER_NODE;
102103
}
103104
nodes.add(node);
104105
}
@@ -116,9 +117,9 @@ public static <T> JImmutableBtreeList<T> of(@Nonnull Indexed<? extends T> values
116117
remaining = 0;
117118
offset = nodeCount;
118119
} else {
119-
node = BtreeBranchNode.of(indexed, offset, offset + BtreeNode.MIN_CHILDREN);
120-
remaining -= BtreeNode.MIN_CHILDREN;
121-
offset += BtreeNode.MIN_CHILDREN;
120+
node = BtreeBranchNode.of(indexed, offset, offset + BUILDER_CHILDREN_PER_NODE);
121+
remaining -= BUILDER_CHILDREN_PER_NODE;
122+
offset += BUILDER_CHILDREN_PER_NODE;
122123
}
123124
nodes.set(branchCount, node);
124125
branchCount += 1;

0 commit comments

Comments
 (0)