geforkt von Mirrors/Paper
d16a5d8813
Prereq changes for the coming storm of performance patches. Includes optimising incremental saving
42 Zeilen
2.3 KiB
Diff
42 Zeilen
2.3 KiB
Diff
From 306788514e502ec1f8ac21c5f937bbd4b0e1a2cc Mon Sep 17 00:00:00 2001
|
|
From: Brokkonaut <hannos17@gmx.de>
|
|
Date: Tue, 7 Feb 2017 16:55:35 -0600
|
|
Subject: [PATCH] Make targetSize more aggressive in the chunk unload queue
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
|
index c575ff57dd..86e1b403b2 100644
|
|
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
|
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
|
@@ -139,7 +139,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
|
this.u = new AtomicInteger();
|
|
this.playerMap = new PlayerMap();
|
|
this.trackedEntities = new Int2ObjectOpenHashMap();
|
|
- this.z = Queues.newConcurrentLinkedQueue();
|
|
+ this.z = new com.destroystokyo.paper.utils.CachedSizeConcurrentLinkedQueue<>(); // Paper
|
|
this.definedStructureManager = definedstructuremanager;
|
|
this.w = worldserver.getWorldProvider().getDimensionManager().a(file);
|
|
this.world = worldserver;
|
|
@@ -389,7 +389,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
|
// Spigot start
|
|
org.spigotmc.SlackActivityAccountant activityAccountant = this.world.getMinecraftServer().slackActivityAccountant;
|
|
activityAccountant.startActivity(0.5);
|
|
- int targetSize = (int) (this.unloadQueue.size() * UNLOAD_QUEUE_RESIZE_FACTOR);
|
|
+ int targetSize = Math.min(this.unloadQueue.size() - 100, (int) (this.unloadQueue.size() * UNLOAD_QUEUE_RESIZE_FACTOR)); // Paper - Make more aggressive
|
|
// Spigot end
|
|
while (longiterator.hasNext()) { // Spigot
|
|
long j = longiterator.nextLong();
|
|
@@ -411,7 +411,8 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
|
|
|
Runnable runnable;
|
|
|
|
- while ((booleansupplier.getAsBoolean() || this.z.size() > 2000) && (runnable = (Runnable) this.z.poll()) != null) {
|
|
+ int queueTarget = Math.min(this.z.size() - 100, (int) (this.z.size() * UNLOAD_QUEUE_RESIZE_FACTOR)); // Paper - Target this queue as well
|
|
+ while ((booleansupplier.getAsBoolean() || this.z.size() > queueTarget) && (runnable = (Runnable) this.z.poll()) != null) { // Paper - Target this queue as well
|
|
runnable.run();
|
|
}
|
|
|
|
--
|
|
2.25.0.windows.1
|
|
|