Added iteration using iterator, if List is not ArrayList.
Reason for this is that if List is LinkedList, complexity for get(int i) is O(n/4).
This commit is contained in:
parent
9c669547ab
commit
b524dcd66d
@ -751,10 +751,12 @@ public class Material implements CloneableSmartAsset, Cloneable, Savable {
|
||||
|
||||
private int applyOverrides(Renderer renderer, Shader shader, List<MatParamOverride> overrides, int unit) {
|
||||
MatParamOverride override;
|
||||
boolean isArrayList = overrides instanceof ArrayList;
|
||||
Iterator<MatParamOverride> iterator = isArrayList ? null : overrides.iterator();
|
||||
|
||||
// manual iteration is used to avoid iterator allocation and to increase iteration performance
|
||||
// manual iteration is used to avoid iterator allocation and to increase iteration performance in case of ArrayList
|
||||
for (int i = 0, listSize = overrides.size(); i < listSize; i++) {
|
||||
override = overrides.get(i);
|
||||
override = isArrayList ? overrides.get(i) : iterator.next();
|
||||
|
||||
VarType type = override.getVarType();
|
||||
|
||||
|
@ -44,6 +44,7 @@ import com.jme3.shader.VarType;
|
||||
import com.jme3.util.ListMap;
|
||||
import java.util.ArrayList;
|
||||
import java.util.EnumSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -112,10 +113,12 @@ public final class Technique {
|
||||
|
||||
private void applyOverrides(DefineList defineList, List<MatParamOverride> overrides) {
|
||||
MatParamOverride override;
|
||||
boolean isArrayList = overrides instanceof ArrayList;
|
||||
Iterator<MatParamOverride> iterator = isArrayList ? null : overrides.iterator();
|
||||
|
||||
// manual iteration is used to avoid iterator allocation and to increase iteration performance
|
||||
// manual iteration is used to avoid iterator allocation and to increase iteration performance in case of ArrayList
|
||||
for (int i = 0, listSize = overrides.size(); i < listSize; i++) {
|
||||
override = overrides.get(i);
|
||||
override = isArrayList ? overrides.get(i) : iterator.next();
|
||||
|
||||
if (!override.isEnabled()) {
|
||||
continue;
|
||||
|
Loading…
x
Reference in New Issue
Block a user