From 6de8ace67b26f039fb1c89a3fce4d5f2437c615c Mon Sep 17 00:00:00 2001 From: Sven Gothel Date: Sat, 16 Aug 2014 11:31:04 +0200 Subject: IntIntHashMap: Reduce temp. ArrayList instances in clone --- src/java/com/jogamp/common/util/IntIntHashMap.java | 7 ++++--- src/junit/com/jogamp/common/util/IntIntHashMapTest.java | 4 +++- src/junit/com/jogamp/common/util/IntObjectHashMapTest.java | 4 +++- src/junit/com/jogamp/common/util/LongIntHashMapTest.java | 4 +++- 4 files changed, 13 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/java/com/jogamp/common/util/IntIntHashMap.java b/src/java/com/jogamp/common/util/IntIntHashMap.java index 954b379..f78b1e0 100644 --- a/src/java/com/jogamp/common/util/IntIntHashMap.java +++ b/src/java/com/jogamp/common/util/IntIntHashMap.java @@ -162,18 +162,19 @@ public class /*name*/IntIntHashMap/*name*/ implements Cloneable, mask, capacity, threshold, keyNotFoundValue); + final ArrayList entries = new ArrayList(); for(int i=table.length-1; i>=0; i--) { // single linked list -> ArrayList - final ArrayList entries = new ArrayList(); Entry se = table[i]; while(null != se) { entries.add(se); se = se.next; } // clone ArrayList -> single linked list (bwd) + final int count = entries.size(); Entry de_next = null; - for(int j=entries.size()-1; j>=0; j--) { - se = entries.get(j); + for(int j=count-1; j>=0; j--) { + se = entries.remove(j); if( isPrimitive ) { de_next = new Entry(se.key, se.value, de_next); } else { diff --git a/src/junit/com/jogamp/common/util/IntIntHashMapTest.java b/src/junit/com/jogamp/common/util/IntIntHashMapTest.java index ac009cb..75524ac 100644 --- a/src/junit/com/jogamp/common/util/IntIntHashMapTest.java +++ b/src/junit/com/jogamp/common/util/IntIntHashMapTest.java @@ -35,10 +35,12 @@ import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.Map.Entry; + import org.junit.BeforeClass; import org.junit.Test; import com.jogamp.common.os.Platform; +import com.jogamp.junit.util.JunitTracer; import static org.junit.Assert.*; import static java.lang.System.*; @@ -52,7 +54,7 @@ import org.junit.FixMethodOrder; import org.junit.runners.MethodSorters; @FixMethodOrder(MethodSorters.NAME_ASCENDING) -public class IntIntHashMapTest { +public class IntIntHashMapTest extends JunitTracer { private static int iterations; private static IntIntUniqueRndValues pairs; diff --git a/src/junit/com/jogamp/common/util/IntObjectHashMapTest.java b/src/junit/com/jogamp/common/util/IntObjectHashMapTest.java index 11bf765..3207683 100644 --- a/src/junit/com/jogamp/common/util/IntObjectHashMapTest.java +++ b/src/junit/com/jogamp/common/util/IntObjectHashMapTest.java @@ -35,10 +35,12 @@ import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.Map.Entry; + import org.junit.BeforeClass; import org.junit.Test; import com.jogamp.common.os.Platform; +import com.jogamp.junit.util.JunitTracer; import static org.junit.Assert.*; @@ -51,7 +53,7 @@ import org.junit.FixMethodOrder; import org.junit.runners.MethodSorters; @FixMethodOrder(MethodSorters.NAME_ASCENDING) -public class IntObjectHashMapTest { +public class IntObjectHashMapTest extends JunitTracer { private static int iterations; private static IntIntObjUniqueRndValues pairs; diff --git a/src/junit/com/jogamp/common/util/LongIntHashMapTest.java b/src/junit/com/jogamp/common/util/LongIntHashMapTest.java index f6ec4bc..90e54b9 100644 --- a/src/junit/com/jogamp/common/util/LongIntHashMapTest.java +++ b/src/junit/com/jogamp/common/util/LongIntHashMapTest.java @@ -35,10 +35,12 @@ import java.io.IOException; import java.util.Iterator; import java.util.HashMap; import java.util.Map.Entry; + import org.junit.BeforeClass; import org.junit.Test; import com.jogamp.common.os.Platform; +import com.jogamp.junit.util.JunitTracer; import static org.junit.Assert.*; import static java.lang.System.*; @@ -52,7 +54,7 @@ import org.junit.FixMethodOrder; import org.junit.runners.MethodSorters; @FixMethodOrder(MethodSorters.NAME_ASCENDING) -public class LongIntHashMapTest { +public class LongIntHashMapTest extends JunitTracer { private static int iterations; private static LongIntUniqueRndValues pairs; -- cgit v1.2.3