From 9a31bb81bfe903af44d55fb2870ae996a42f32bd Mon Sep 17 00:00:00 2001 From: bartimaeusnek <33183715+bartimaeusnek@users.noreply.github.com> Date: Tue, 21 Aug 2018 07:58:41 +0200 Subject: alkalus' fix to improve performance on the typefilter... --- src/main/java/gregtech/api/enums/OrePrefixes.java | 34 +++++++++++++++++++++-- 1 file changed, 31 insertions(+), 3 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/gregtech/api/enums/OrePrefixes.java b/src/main/java/gregtech/api/enums/OrePrefixes.java index 5a776b60c4..2dbeabf5c9 100644 --- a/src/main/java/gregtech/api/enums/OrePrefixes.java +++ b/src/main/java/gregtech/api/enums/OrePrefixes.java @@ -865,10 +865,38 @@ public enum OrePrefixes { return true; } + private static final HashMap>mCachedResults = new HashMap>(); + public boolean contains(ItemStack aStack) { - if (aStack == null) return false; - for (ItemStack tStack : mPrefixedItems) - if (GT_Utility.areStacksEqual(aStack, tStack, !tStack.hasTagCompound())) return true; + + if (aStack == null){ + return false; + } + + HashMap aCurrentSet; + if (mCachedResults.get(this.toString()) != null){ + aCurrentSet = mCachedResults.get(this.toString()); + } + + else { + aCurrentSet = new HashMap(); + mCachedResults.put(this.toString(), aCurrentSet); + } + + if (aCurrentSet.get(aStack) != null){ + return aCurrentSet.get(aStack); + } + else { + for (ItemStack tStack : mPrefixedItems){ + if (GT_Utility.areStacksEqual(aStack, tStack, !tStack.hasTagCompound())){ + aCurrentSet.put(aStack, true); + return true; + } + } + } + + aCurrentSet.put(aStack, false); + return false; } -- cgit