diff options
author | Elijah C. Menifee <[email protected]> | 2010-08-23 03:02:43 +0800 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2010-11-06 03:49:25 +0100 |
commit | 4c808ec572808a221d0ce08785dad2d18f77ea5f (patch) | |
tree | 1505e48475d97d3a8422aaf335fee75edd6b922d /src/junit/com/jogamp | |
parent | 0674c42c0b18073b53a09300d0f60373f1463665 (diff) |
Fixed benchmarking bugs in primitive HashMap test.
Both IntIntHashMapTest and LongIntHashMapTest failed to reset test start time.
The time values for intmapGetTime,mapGetTime,intmapRemoveTime,and mapRemoveTime
all used the start time value from mapPutTime. This caused the following to be
always/guarenteed to be true:
mapPutTime < intmapGetTime < mapGetTime < intmapRemoveTime < mapRemoveTime
thus not actually testing the following asserts:
assertTrue("'get' too slow", intmapGetTime <= mapGetTime);
assertTrue("'remove' too slow", intmapRemoveTime <= mapRemoveTime);
In addition the results of the test were being printed before the actual test
ran.
Changed code to reset time to System.nanoTime() prior to each for loop, and
moved time calculation and result output to below the test for loop.
I also improved the output of the test info, by including the warmup status
on benchmark start.
Diffstat (limited to 'src/junit/com/jogamp')
-rw-r--r-- | src/junit/com/jogamp/common/util/IntIntHashMapTest.java | 26 | ||||
-rw-r--r-- | src/junit/com/jogamp/common/util/LongIntHashMapTest.java | 23 |
2 files changed, 29 insertions, 20 deletions
diff --git a/src/junit/com/jogamp/common/util/IntIntHashMapTest.java b/src/junit/com/jogamp/common/util/IntIntHashMapTest.java index 54f3399..cf3fd20 100644 --- a/src/junit/com/jogamp/common/util/IntIntHashMapTest.java +++ b/src/junit/com/jogamp/common/util/IntIntHashMapTest.java @@ -143,7 +143,8 @@ public class IntIntHashMapTest { final IntIntHashMap intmap = new IntIntHashMap(1024); final HashMap<Integer, Integer> map = new HashMap<Integer, Integer>(1024); - out.println(intmap.getClass().getName()+" vs "+map.getClass().getName()); + out.println(intmap.getClass().getName()+" vs "+map.getClass().getName()+ + " warmup: " + warmup); out.println("put"); long time = nanoTime(); @@ -153,7 +154,6 @@ public class IntIntHashMapTest { long intmapPutTime = (nanoTime() - time); out.println(" iimap: " + intmapPutTime/1000000.0f+"ms"); - time = nanoTime(); for (int i = 0; i < iterations; i++) { map.put(rndKeys[i], rndValues[i]); @@ -164,32 +164,36 @@ public class IntIntHashMapTest { System.out.println(); System.out.println("get"); - long intmapGetTime = (nanoTime() - time); - out.println(" iimap: " + intmapGetTime/1000000.0f+"ms"); + time = nanoTime(); for (int i = 0; i < iterations; i++) { intmap.get(rndValues[i]); } - - long mapGetTime = (nanoTime() - time); - out.println(" map: " + mapGetTime/1000000.0f+"ms"); + long intmapGetTime = (nanoTime() - time); + out.println(" iimap: " + intmapGetTime/1000000.0f+"ms"); + + time = nanoTime(); for (int i = 0; i < iterations; i++) { map.get(rndValues[i]); } + long mapGetTime = (nanoTime() - time); + out.println(" map: " + mapGetTime/1000000.0f+"ms"); out.println(); out.println("remove"); - long intmapRemoveTime = (nanoTime() - time); - out.println(" iimap: " + intmapRemoveTime/1000000.0f+"ms"); + time = nanoTime(); for (int i = 0; i < iterations; i++) { intmap.remove(rndValues[i]); } + long intmapRemoveTime = (nanoTime() - time); + out.println(" iimap: " + intmapRemoveTime/1000000.0f+"ms"); - long mapRemoveTime = (nanoTime() - time); - out.println(" map: " + mapRemoveTime/1000000.0f+"ms"); + time = nanoTime(); for (int i = 0; i < iterations; i++) { map.remove(rndValues[i]); } + long mapRemoveTime = (nanoTime() - time); + out.println(" map: " + mapRemoveTime/1000000.0f+"ms"); if(!warmup) { assertTrue("'put' too slow", intmapPutTime <= mapPutTime); diff --git a/src/junit/com/jogamp/common/util/LongIntHashMapTest.java b/src/junit/com/jogamp/common/util/LongIntHashMapTest.java index 56ed7fd..0670380 100644 --- a/src/junit/com/jogamp/common/util/LongIntHashMapTest.java +++ b/src/junit/com/jogamp/common/util/LongIntHashMapTest.java @@ -143,7 +143,8 @@ public class LongIntHashMapTest { final LongIntHashMap intmap = new LongIntHashMap(1024); final HashMap<Long, Integer> map = new HashMap<Long, Integer>(1024); - out.println(intmap.getClass().getName()+" vs "+map.getClass().getName()); + out.println(intmap.getClass().getName()+" vs "+map.getClass().getName()+ + " warmup: " + warmup); out.println("put"); long time = nanoTime(); @@ -164,32 +165,36 @@ public class LongIntHashMapTest { System.out.println(); System.out.println("get"); - long intmapGetTime = (nanoTime() - time); - out.println(" iimap: " + intmapGetTime/1000000.0f+"ms"); + time = nanoTime(); for (int i = 0; i < iterations; i++) { intmap.get(rndValues[i]); } + long intmapGetTime = (nanoTime() - time); + out.println(" iimap: " + intmapGetTime/1000000.0f+"ms"); - long mapGetTime = (nanoTime() - time); - out.println(" map: " + mapGetTime/1000000.0f+"ms"); + time = nanoTime(); for (int i = 0; i < iterations; i++) { map.get(rndValues[i]); } + long mapGetTime = (nanoTime() - time); + out.println(" map: " + mapGetTime/1000000.0f+"ms"); out.println(); out.println("remove"); - long intmapRemoveTime = (nanoTime() - time); - out.println(" iimap: " + intmapRemoveTime/1000000.0f+"ms"); + time = nanoTime(); for (int i = 0; i < iterations; i++) { intmap.remove(rndValues[i]); } + long intmapRemoveTime = (nanoTime() - time); + out.println(" iimap: " + intmapRemoveTime/1000000.0f+"ms"); - long mapRemoveTime = (nanoTime() - time); - out.println(" map: " + mapRemoveTime/1000000.0f+"ms"); + time = nanoTime(); for (int i = 0; i < iterations; i++) { map.remove(rndValues[i]); } + long mapRemoveTime = (nanoTime() - time); + out.println(" map: " + mapRemoveTime/1000000.0f+"ms"); if(!warmup) { assertTrue("'put' too slow", intmapPutTime <= mapPutTime); |