geforkt von Mirrors/Paper
Optimize Dynamic#get Missing Keys
get was calling toString() on every NBT object that was ever asked for an optional key from the object to build a string for the error text. When done on large NBT objects, this was using a ton of computation time building the JSON representation of the NBT object. Now we will just skip the value when 99.9999% of the time the text is never even printed.
Dieser Commit ist enthalten in:
Ursprung
e32901791b
Commit
3f4b9fd365
@ -0,0 +1,19 @@
|
|||||||
|
--- a/com/mojang/serialization/Dynamic.java
|
||||||
|
+++ b/com/mojang/serialization/Dynamic.java
|
||||||
|
@@ -19,6 +19,7 @@
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
public class Dynamic<T> extends DynamicLike<T> {
|
||||||
|
+ private static final boolean DEBUG_MISSING_KEYS = Boolean.getBoolean("Paper.debugDynamicMissingKeys"); // Paper - Perf: Skip toString on values like NBT
|
||||||
|
private final T value;
|
||||||
|
|
||||||
|
public Dynamic(final DynamicOps<T> ops) {
|
||||||
|
@@ -120,7 +121,7 @@
|
||||||
|
return new OptionalDynamic<>(ops, ops.getMap(value).flatMap(m -> {
|
||||||
|
final T value = m.get(key);
|
||||||
|
if (value == null) {
|
||||||
|
- return DataResult.error(() -> "key missing: " + key + " in " + this.value);
|
||||||
|
+ return DataResult.error(() -> DEBUG_MISSING_KEYS ? "key missing: " + key + " in " + this.value : "key missing: " + key); // Paper - Perf: Skip toString on values like NBT
|
||||||
|
}
|
||||||
|
return DataResult.success(new Dynamic<>(ops, value));
|
||||||
|
}));
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren