From ee6d0fa9384fba4be2efe5ea2a0e06ba7df8df11 Mon Sep 17 00:00:00 2001 From: Thinkofdeath Date: Fri, 20 Feb 2015 10:19:11 +0000 Subject: [PATCH] SPIGOT-591: Optimize EntitySlice.iterator Previously if the key 'this.c' was missing a new hashmap was created, this caused thousands to be created each tick --- nms-patches/EntitySlice.patch | 22 ++++++++++++++++++++++ nms-patches/EntitySliceInnerClass1.patch | 10 ++++++++++ nms-patches/EntitySliceInnerClass2.patch | 10 ++++++++++ 3 files changed, 42 insertions(+) create mode 100644 nms-patches/EntitySlice.patch create mode 100644 nms-patches/EntitySliceInnerClass1.patch create mode 100644 nms-patches/EntitySliceInnerClass2.patch diff --git a/nms-patches/EntitySlice.patch b/nms-patches/EntitySlice.patch new file mode 100644 index 0000000000..5e898280de --- /dev/null +++ b/nms-patches/EntitySlice.patch @@ -0,0 +1,22 @@ +--- ../work/decompile-8eb82bde/net/minecraft/server/EntitySlice.java 2015-02-20 10:18:42.025023871 +0000 ++++ src/main/java/net/minecraft/server/EntitySlice.java 2015-02-20 10:18:42.057023871 +0000 +@@ -4,6 +4,7 @@ + import com.google.common.collect.Multimap; + import com.google.common.collect.Sets; + import java.util.AbstractSet; ++import java.util.Collections; + import java.util.Iterator; + import java.util.Set; + import org.apache.commons.lang3.ClassUtils; +@@ -89,6 +90,11 @@ + } + + public Iterator iterator() { ++ // CraftBukkit start ++ if (!this.a.containsKey(this.c)) { ++ return Collections.EMPTY_LIST.iterator(); ++ } ++ // CraftBukkit end + Iterator iterator = this.a.get(this.c).iterator(); + + return new EntitySliceInnerClass2(this, iterator); diff --git a/nms-patches/EntitySliceInnerClass1.patch b/nms-patches/EntitySliceInnerClass1.patch new file mode 100644 index 0000000000..c4cf2192f7 --- /dev/null +++ b/nms-patches/EntitySliceInnerClass1.patch @@ -0,0 +1,10 @@ +--- ../work/decompile-8eb82bde/net/minecraft/server/EntitySliceInnerClass1.java 2015-02-20 10:18:41.853023875 +0000 ++++ src/main/java/net/minecraft/server/EntitySliceInnerClass1.java 2015-02-20 10:18:41.853023875 +0000 +@@ -3,6 +3,7 @@ + import com.google.common.collect.Iterators; + import java.util.Iterator; + ++// PAIL: Access transform + class EntitySliceInnerClass1 implements Iterable { + + final Class a; diff --git a/nms-patches/EntitySliceInnerClass2.patch b/nms-patches/EntitySliceInnerClass2.patch new file mode 100644 index 0000000000..bd7f1184e7 --- /dev/null +++ b/nms-patches/EntitySliceInnerClass2.patch @@ -0,0 +1,10 @@ +--- ../work/decompile-8eb82bde/net/minecraft/server/EntitySliceInnerClass2.java 2015-02-20 10:18:41.945023873 +0000 ++++ src/main/java/net/minecraft/server/EntitySliceInnerClass2.java 2015-02-20 10:18:41.965023873 +0000 +@@ -3,6 +3,7 @@ + import com.google.common.collect.AbstractIterator; + import java.util.Iterator; + ++// PAIL: Access transform + class EntitySliceInnerClass2 extends AbstractIterator { + + final Iterator a;