Change iterator Queue from LinkedList to ArrayDequeue

This improves performance and memory allocation, whenever the iterators are used. See https://docs.oracle.com/javase/8/docs/api/java/util/ArrayDeque.html
This commit is contained in:
JustAlittleWolf
2024-06-13 13:14:30 +02:00
parent af9b55ad6c
commit bd1d0063e5
2 changed files with 6 additions and 12 deletions
@@ -22,15 +22,12 @@ package com.seibel.distanthorizons.core.util.objects.quadTree.iterators;
import com.seibel.distanthorizons.core.pos.DhSectionPos;
import com.seibel.distanthorizons.core.util.objects.quadTree.QuadNode;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.NoSuchElementException;
import java.util.Queue;
import java.util.*;
import java.util.function.Consumer;
public class QuadNodeChildIndexIterator<T> implements Iterator<Integer>
{
private final Queue<Integer> iteratorQueue = new LinkedList<>();
private final Queue<Integer> iteratorQueue = new ArrayDeque<>();
@@ -22,10 +22,7 @@ package com.seibel.distanthorizons.core.util.objects.quadTree.iterators;
import com.seibel.distanthorizons.core.pos.DhSectionPos;
import com.seibel.distanthorizons.core.util.objects.quadTree.QuadNode;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.NoSuchElementException;
import java.util.Queue;
import java.util.*;
import java.util.function.Consumer;
public class QuadTreeNodeIterator<T> implements Iterator<QuadNode<T>>
@@ -34,8 +31,8 @@ public class QuadTreeNodeIterator<T> implements Iterator<QuadNode<T>>
private final byte highestDetailLevel;
private final Queue<QuadNode<T>> validNodesForDetailLevel = new LinkedList<>();
private final Queue<QuadNode<T>> iteratorNodeQueue = new LinkedList<>();
private final Queue<QuadNode<T>> validNodesForDetailLevel = new ArrayDeque<>();
private final Queue<QuadNode<T>> iteratorNodeQueue = new ArrayDeque<>();
private byte iteratorDetailLevel = 0;
private final boolean onlyReturnLeafValues;
@@ -64,7 +61,7 @@ public class QuadTreeNodeIterator<T> implements Iterator<QuadNode<T>>
// but it is simple and functions well enough for now
Queue<QuadNode<T>> parentNodeQueue = new LinkedList<>();
Queue<QuadNode<T>> parentNodeQueue = new ArrayDeque<>();
parentNodeQueue.add(rootNode);
// walk through the whole tree and add each leaf node to the iterator queue