diff options
author | Sven Gothel <[email protected]> | 2010-11-25 04:01:23 +0100 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2010-11-25 04:01:23 +0100 |
commit | 7f76b669c534208115b5e06ebab53acf1fcaa9de (patch) | |
tree | 35377efae278579f7554e989ba149431e5090f38 | |
parent | 4e4f6ce89d01ab36dc7db258fe64feb0b1113c16 (diff) |
Fix HashMapTests. The benchmark tests used the value as a key, hence finding the non existing hashed value lead to O(n)
-rw-r--r-- | make/scripts/runtest.sh | 4 | ||||
-rw-r--r-- | src/junit/com/jogamp/common/util/IntIntHashMapTest.java | 25 | ||||
-rw-r--r-- | src/junit/com/jogamp/common/util/LongIntHashMapTest.java | 25 |
3 files changed, 35 insertions, 19 deletions
diff --git a/make/scripts/runtest.sh b/make/scripts/runtest.sh index 21602d5..b563f74 100644 --- a/make/scripts/runtest.sh +++ b/make/scripts/runtest.sh @@ -39,10 +39,12 @@ function onetest() { } #onetest com.jogamp.common.GlueGenVersion 2>&1 | tee -a $LOG -onetest com.jogamp.common.util.TestVersionInfo 2>&1 | tee -a $LOG +#onetest com.jogamp.common.util.TestVersionInfo 2>&1 | tee -a $LOG #onetest com.jogamp.common.util.TestIteratorIndexCORE 2>&1 | tee -a $LOG #onetest com.jogamp.common.util.locks.TestRecursiveLock01 2>&1 | tee -a $LOG #onetest com.jogamp.common.util.TestArrayHashSet01 2>&1 | tee -a $LOG +onetest com.jogamp.common.util.IntIntHashMapTest 2>&1 | tee -a $LOG +onetest com.jogamp.common.util.LongIntHashMapTest 2>&1 | tee -a $LOG #onetest com.jogamp.common.nio.TestBuffersFloatDoubleConversion 2>&1 | tee -a $LOG #onetest com.jogamp.gluegen.PCPPTest 2>&1 | tee -a $LOG #onetest com.jogamp.gluegen.test.TestPointerBufferEndian 2>&1 | tee -a $LOG diff --git a/src/junit/com/jogamp/common/util/IntIntHashMapTest.java b/src/junit/com/jogamp/common/util/IntIntHashMapTest.java index c4d8939..febd492 100644 --- a/src/junit/com/jogamp/common/util/IntIntHashMapTest.java +++ b/src/junit/com/jogamp/common/util/IntIntHashMapTest.java @@ -31,6 +31,7 @@ */ package com.jogamp.common.util; +import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.Map.Entry; @@ -166,14 +167,14 @@ public class IntIntHashMapTest { System.out.println("get"); time = nanoTime(); for (int i = 0; i < iterations; i++) { - intmap.get(rndValues[i]); + intmap.get(rndKeys[i]); } long intmapGetTime = (nanoTime() - time); out.println(" iimap: " + intmapGetTime/1000000.0f+"ms"); time = nanoTime(); for (int i = 0; i < iterations; i++) { - map.get(rndValues[i]); + map.get(rndKeys[i]); } long mapGetTime = (nanoTime() - time); out.println(" map: " + mapGetTime/1000000.0f+"ms"); @@ -183,26 +184,32 @@ public class IntIntHashMapTest { out.println("remove"); time = nanoTime(); for (int i = 0; i < iterations; i++) { - intmap.remove(rndValues[i]); + intmap.remove(rndKeys[i]); } + assertEquals(0, intmap.size()); long intmapRemoveTime = (nanoTime() - time); out.println(" iimap: " + intmapRemoveTime/1000000.0f+"ms"); time = nanoTime(); for (int i = 0; i < iterations; i++) { - map.remove(rndValues[i]); + map.remove(rndKeys[i]); } + assertEquals(0, map.size()); long mapRemoveTime = (nanoTime() - time); out.println(" map: " + mapRemoveTime/1000000.0f+"ms"); if(!warmup) { - // sometimes the primitive map is slower than the 1st class one, - // hence adding 50% tolerance. at least this map is memory efficient. - assertTrue("'put' too slow", intmapPutTime <= mapPutTime + mapPutTime/2 ); - assertTrue("'get' too slow", intmapGetTime <= mapGetTime + mapGetTime/2); - assertTrue("'remove' too slow", intmapRemoveTime <= mapRemoveTime + mapRemoveTime/2 ); + // In case the 1st class map magically improves + // we add a tolerance around 25% since this would be hardly a bug. + // The main goal of this primitve map is memory efficiency. + assertTrue("'put' too slow", intmapPutTime <= mapPutTime + mapPutTime/4 ); + assertTrue("'get' too slow", intmapGetTime <= mapGetTime + mapGetTime/4 ); + assertTrue("'remove' too slow", intmapRemoveTime <= mapRemoveTime + mapRemoveTime/4 ); } } + public static void main(String args[]) throws IOException { + org.junit.runner.JUnitCore.main(IntIntHashMapTest.class.getName()); + } } diff --git a/src/junit/com/jogamp/common/util/LongIntHashMapTest.java b/src/junit/com/jogamp/common/util/LongIntHashMapTest.java index a7fe07e..c22efa3 100644 --- a/src/junit/com/jogamp/common/util/LongIntHashMapTest.java +++ b/src/junit/com/jogamp/common/util/LongIntHashMapTest.java @@ -31,6 +31,7 @@ */ package com.jogamp.common.util; +import java.io.IOException; import java.util.Iterator; import java.util.HashMap; import java.util.Map.Entry; @@ -167,14 +168,14 @@ public class LongIntHashMapTest { System.out.println("get"); time = nanoTime(); for (int i = 0; i < iterations; i++) { - intmap.get(rndValues[i]); + intmap.get(rndKeys[i]); } long intmapGetTime = (nanoTime() - time); out.println(" iimap: " + intmapGetTime/1000000.0f+"ms"); time = nanoTime(); for (int i = 0; i < iterations; i++) { - map.get(rndValues[i]); + map.get(rndKeys[i]); } long mapGetTime = (nanoTime() - time); out.println(" map: " + mapGetTime/1000000.0f+"ms"); @@ -184,26 +185,32 @@ public class LongIntHashMapTest { out.println("remove"); time = nanoTime(); for (int i = 0; i < iterations; i++) { - intmap.remove(rndValues[i]); + intmap.remove(rndKeys[i]); } + assertEquals(0, intmap.size()); long intmapRemoveTime = (nanoTime() - time); out.println(" iimap: " + intmapRemoveTime/1000000.0f+"ms"); time = nanoTime(); for (int i = 0; i < iterations; i++) { - map.remove(rndValues[i]); + map.remove(rndKeys[i]); } + assertEquals(0, map.size()); long mapRemoveTime = (nanoTime() - time); out.println(" map: " + mapRemoveTime/1000000.0f+"ms"); if(!warmup) { - // sometimes the primitive map is slower than the 1st class one, - // hence adding 50% tolerance. at least this map is memory efficient. - assertTrue("'put' too slow", intmapPutTime <= mapPutTime + mapPutTime/2 ); - assertTrue("'get' too slow", intmapGetTime <= mapGetTime + mapGetTime/2); - assertTrue("'remove' too slow", intmapRemoveTime <= mapRemoveTime + mapRemoveTime/2 ); + // In case the 1st class map magically improves + // we add a tolerance around 25% since this would be hardly a bug. + // The main goal of this primitve map is memory efficiency. + assertTrue("'put' too slow", intmapPutTime <= mapPutTime + mapPutTime/4 ); + assertTrue("'get' too slow", intmapGetTime <= mapGetTime + mapGetTime/4 ); + assertTrue("'remove' too slow", intmapRemoveTime <= mapRemoveTime + mapRemoveTime/4 ); } } + public static void main(String args[]) throws IOException { + org.junit.runner.JUnitCore.main(LongIntHashMapTest.class.getName()); + } } |