From d6b0f3f9978799b26a3ebca1a91ebc110a6b894a Mon Sep 17 00:00:00 2001 From: makamys Date: Tue, 21 Jun 2022 04:46:43 +0200 Subject: Recycle MeshQuad objects Reduces client thread's RAM allocation rate from ~80 MB/s to ~20 MB/s. --- .../java/makamys/neodymium/util/RecyclingList.java | 37 ++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/main/java/makamys/neodymium/util/RecyclingList.java (limited to 'src/main/java/makamys/neodymium/util') diff --git a/src/main/java/makamys/neodymium/util/RecyclingList.java b/src/main/java/makamys/neodymium/util/RecyclingList.java new file mode 100644 index 0000000..ea240bb --- /dev/null +++ b/src/main/java/makamys/neodymium/util/RecyclingList.java @@ -0,0 +1,37 @@ +package makamys.neodymium.util; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.Supplier; + +public class RecyclingList { + + private Supplier constructor; + + int nextIndex; + private List list; + + public RecyclingList(Supplier constructor) { + this.constructor = constructor; + this.list = new ArrayList(); + } + + public T get(int i) { + while(list.size() <= i) { + list.add(constructor.get()); + } + return list.get(i); + } + + public T next() { + return get(nextIndex++); + } + + public void reset() { + nextIndex = 0; + } + + public List getAsList() { + return list.subList(0, nextIndex); + } +} -- cgit