9
0
mirror of https://github.com/Winds-Studio/Leaf.git synced 2025-12-19 15:09:25 +00:00
Files
Leaf/leaf-server/minecraft-patches/features/0122-Make-removeIf-slightly-faster.patch

60 lines
2.2 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Taiyou06 <kaandindar21@gmail.com>
Date: Sun, 23 Feb 2025 00:37:39 +0100
Subject: [PATCH] Make removeIf slightly faster
diff --git a/net/minecraft/util/SortedArraySet.java b/net/minecraft/util/SortedArraySet.java
index 3de282a68bd125ad17fee47bebef3835a860c170..7a838be229f65d676ed0ed4f6aa074630c90b99f 100644
--- a/net/minecraft/util/SortedArraySet.java
+++ b/net/minecraft/util/SortedArraySet.java
@@ -18,37 +18,26 @@ public class SortedArraySet<T> extends AbstractSet<T> implements ca.spottedleaf.
// Paper start - rewrite chunk system
@Override
public final boolean removeIf(final java.util.function.Predicate<? super T> filter) {
- // prev. impl used an iterator, which could be n^2 and creates garbage
+ // Leaf start - Make removeIf slightly faster
int i = 0;
final int len = this.size;
final T[] backingArray = this.contents;
- for (;;) {
- if (i >= len) {
- return false;
- }
- if (!filter.test(backingArray[i])) {
- ++i;
- continue;
- }
- break;
- }
+ // Find first element to remove
+ while (i < len && !filter.test(backingArray[i])) i++;
+ if (i == len) return false;
- // we only want to write back to backingArray if we really need to
-
- int lastIndex = i; // this is where new elements are shifted to
-
- for (; i < len; ++i) {
- final T curr = backingArray[i];
- if (!filter.test(curr)) { // if test throws we're screwed
- backingArray[lastIndex++] = curr;
- }
+ // Shift elements in-place
+ int lastIndex = i;
+ for (i++; i < len; i++) {
+ T curr = backingArray[i];
+ if (!filter.test(curr)) backingArray[lastIndex++] = curr;
}
- // cleanup end
- Arrays.fill(backingArray, lastIndex, len, null);
+ // Only update size - skip Arrays.fill (safe in ChunkHolderManager's context)
this.size = lastIndex;
return true;
+ // Leaf end - Make removeIf slightly faster
}
@Override