summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2010-11-25 04:01:23 +0100
committerSven Gothel <[email protected]>2010-11-25 04:01:23 +0100
commit7f76b669c534208115b5e06ebab53acf1fcaa9de (patch)
tree35377efae278579f7554e989ba149431e5090f38 /src
parent4e4f6ce89d01ab36dc7db258fe64feb0b1113c16 (diff)
Fix HashMapTests. The benchmark tests used the value as a key, hence finding the non existing hashed value lead to O(n)
Diffstat (limited to 'src')
-rw-r--r--src/junit/com/jogamp/common/util/IntIntHashMapTest.java25
-rw-r--r--src/junit/com/jogamp/common/util/LongIntHashMapTest.java25
2 files changed, 32 insertions, 18 deletions
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());
+ }
}