mirror of
https://github.com/YatopiaMC/Yatopia.git
synced 2024-11-14 14:45:48 +01:00
0c43fe2949
Upstream/An Sidestream has released updates that appears to apply and compile correctly This update has NOT been tested by YatopiaMC and as with ANY update, please do your own testing. Tuinity Changes: c04b005 Merge branch 'master' of https://github.com/Spottedleaf/Tuinity into ver/1.16.5 1d169e7 Updated Upstream (Paper) EMC Changes: a8914cb8 Remove the ProjectileHitBlockEvent b8f864b5 Updated Paper 42cd3269 Remove FlowerPotPlantEvent and undeprecate FlowerPotRemoveEvent 64b3edf0 Remove the UUID key for setSpawnedEntity 938c6f1b Convert spawn egg entity tag attributes on creature spawn 4cc80284 Disable entityTag conversion since data version isn't accessible in scope 478d83fe Updated Paper 1e409abf Updated Paper Origami Changes: ab42df9 Update Paper Purpur Changes: 7e8bf66 Updated Upstream (Paper & Tuinity) AirplaneLite Changes: 3200f2a Add new webhook for notifications fe01371 Up MC version c585ff5 Updated Upstream (Tuinity)
78 lines
3.1 KiB
Diff
78 lines
3.1 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: ishland <ishlandmc@yeah.net>
|
|
Date: Sun, 20 Sep 2020 00:05:44 +0800
|
|
Subject: [PATCH] Improve task performance
|
|
|
|
Replace ConcurrentLinkedQueue + LockSupport hack to reduce time
|
|
consumption of addTask(R)V
|
|
|
|
Co-authored-by: Mykyta Komarn <nkomarn@hotmail.com>
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/IAsyncTaskHandler.java b/src/main/java/net/minecraft/server/IAsyncTaskHandler.java
|
|
index 27db247aa40e0516302c74b9bf00c631a8607af5..6f14c97fcc36c0717f72443d620c2383e102ba0f 100644
|
|
--- a/src/main/java/net/minecraft/server/IAsyncTaskHandler.java
|
|
+++ b/src/main/java/net/minecraft/server/IAsyncTaskHandler.java
|
|
@@ -13,9 +13,11 @@ public abstract class IAsyncTaskHandler<R extends Runnable> implements Mailbox<R
|
|
|
|
private final String b;
|
|
private static final Logger LOGGER = LogManager.getLogger();
|
|
- private final Queue<R> d = Queues.newConcurrentLinkedQueue();
|
|
+ private final java.util.concurrent.BlockingDeque<R> d = new java.util.concurrent.LinkedBlockingDeque<>(); // Yatopia - improve task performance
|
|
private int e;
|
|
|
|
+ private R next = null; // Yatopia - improve task performance - temp storage for next object
|
|
+
|
|
protected IAsyncTaskHandler(String s) {
|
|
this.b = s;
|
|
}
|
|
@@ -79,7 +81,7 @@ public abstract class IAsyncTaskHandler<R extends Runnable> implements Mailbox<R
|
|
public final void addTask(R r0) { a(r0); }; // Paper - OBFHELPER
|
|
public void a(R r0) {
|
|
this.d.add(r0);
|
|
- LockSupport.unpark(this.getThread());
|
|
+ // LockSupport.unpark(this.getThread()); // Yatopia - improve task performance - replaced by LinkedBlockingQueue
|
|
}
|
|
|
|
public void execute(Runnable runnable) {
|
|
@@ -99,14 +101,18 @@ public abstract class IAsyncTaskHandler<R extends Runnable> implements Mailbox<R
|
|
}
|
|
|
|
protected boolean executeNext() {
|
|
- R r0 = this.d.peek(); // Paper - decompile fix
|
|
+ if(next == null && !d.isEmpty()) bm(); // Yatopia - Improve task performance
|
|
|
|
- if (r0 == null) {
|
|
+ if (next == null) { // Yatopia - Improve task performance
|
|
return false;
|
|
- } else if (this.e == 0 && !this.canExecute(r0)) {
|
|
+ } else if (this.e == 0 && !this.canExecute(next)) { // Yatopia - Improve task performance
|
|
return false;
|
|
} else {
|
|
- this.executeTask(this.d.remove()); // Paper - decompile fix
|
|
+ // Yatopia start - Improve task performance
|
|
+ R r = next;
|
|
+ next = null;
|
|
+ this.executeTask(r); // Paper - decompile fix
|
|
+ // Yatopia end
|
|
return true;
|
|
}
|
|
}
|
|
@@ -127,8 +133,17 @@ public abstract class IAsyncTaskHandler<R extends Runnable> implements Mailbox<R
|
|
}
|
|
|
|
protected void bm() {
|
|
+ // Yatopia start - replaced logic
|
|
+ /*
|
|
Thread.yield();
|
|
LockSupport.parkNanos("waiting for tasks", 100000L);
|
|
+ */
|
|
+ next = null;
|
|
+ try {
|
|
+ next = d.poll(100, java.util.concurrent.TimeUnit.MICROSECONDS);
|
|
+ } catch (InterruptedException ignored) {
|
|
+ }
|
|
+ // Yatopia end
|
|
}
|
|
|
|
protected void executeTask(R r0) {
|