60 lines
1.8 KiB
Java
60 lines
1.8 KiB
Java
package btools.util;
|
|
|
|
import org.junit.Assert;
|
|
import org.junit.Test;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.Random;
|
|
|
|
public class CompactMapTest {
|
|
@Test
|
|
public void hashMapComparisonTest() {
|
|
hashMapComparison(0, 1);
|
|
hashMapComparison(1, 1);
|
|
hashMapComparison(2, 2);
|
|
hashMapComparison(3, 3);
|
|
hashMapComparison(4, 4);
|
|
hashMapComparison(5, 5);
|
|
hashMapComparison(7, 10);
|
|
hashMapComparison(8, 10);
|
|
hashMapComparison(10000, 20000);
|
|
}
|
|
|
|
private void hashMapComparison(int mapsize, int trycount) {
|
|
Random rand = new Random(12345);
|
|
HashMap<Long, String> hmap = new HashMap<Long, String>();
|
|
CompactLongMap<String> cmap_slow = new CompactLongMap<String>();
|
|
CompactLongMap<String> cmap_fast = new CompactLongMap<String>();
|
|
|
|
for (int i = 0; i < mapsize; i++) {
|
|
String s = "" + i;
|
|
long k = mapsize < 10 ? i : rand.nextInt(20000);
|
|
Long KK = new Long(k);
|
|
|
|
if (!hmap.containsKey(KK)) {
|
|
hmap.put(KK, s);
|
|
cmap_slow.put(k, s);
|
|
cmap_fast.fastPut(k, s);
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < trycount * 2; i++) {
|
|
if (i == trycount) {
|
|
cmap_slow = new FrozenLongMap<String>(cmap_slow);
|
|
cmap_fast = new FrozenLongMap<String>(cmap_fast);
|
|
}
|
|
long k = mapsize < 10 ? i : rand.nextInt(20000);
|
|
Long KK = new Long(k);
|
|
String s = hmap.get(KK);
|
|
|
|
boolean contained = hmap.containsKey(KK);
|
|
Assert.assertEquals("containsKey missmatch (slow)", contained, cmap_slow.contains(k));
|
|
Assert.assertEquals("containsKey missmatch (fast)", contained, cmap_fast.contains(k));
|
|
|
|
if (contained) {
|
|
Assert.assertEquals("object missmatch (fast)", s, cmap_fast.get(k));
|
|
Assert.assertEquals("object missmatch (slow)", s, cmap_slow.get(k));
|
|
}
|
|
}
|
|
}
|
|
}
|