--- jsr166/src/test/loops/IntegerMax.java 2013/02/28 16:33:53 1.2 +++ jsr166/src/test/loops/IntegerMax.java 2013/03/22 18:41:30 1.3 @@ -67,23 +67,24 @@ public class IntegerMax { ctest(new CopyOnWriteArrayList(), vlist, vmax, size, trials); ctest(new PriorityQueue(), klist, kmax, size, trials); ctest(new PriorityQueue(), vlist, vmax, size, trials); + ctest(new HashSet(), klist, kmax, size, trials); ctest(new HashSet(), vlist, vmax, size, trials); ctest(ConcurrentHashMap.newKeySet(), klist, kmax, size, trials); ctest(ConcurrentHashMap.newKeySet(), vlist, vmax, size, trials); ctest(new TreeSet(), klist, kmax, size, trials); ctest(new TreeSet(), vlist, vmax, size, trials); - ctest(ConcurrentSkipListMap.newKeySet(), klist, kmax, size, trials); - ctest(ConcurrentSkipListMap.newKeySet(), vlist, vmax, size, trials); - + ctest(new ConcurrentSkipListSet(), klist, kmax, size, trials); + ctest(new ConcurrentSkipListSet(), vlist, vmax, size, trials); + mtest(new HashMap(), keys, vals, kmax, vmax, size, trials); mtest(new IdentityHashMap(), keys, vals, kmax, vmax, size, trials); mtest(new WeakHashMap(), keys, vals, kmax, vmax, size, trials); mtest(new ConcurrentHashMap(), keys, vals, kmax, vmax, size, trials); - + mtest(new TreeMap(), keys, vals, kmax, vmax, size, trials); mtest(new ConcurrentSkipListMap(), keys, vals, kmax, vmax, size, trials); - + if (allClasses) { mtest(new Hashtable(), keys, vals, kmax, vmax, size, trials); mtest(new LinkedHashMap(), keys, vals, kmax, vmax, size, trials); @@ -91,6 +92,8 @@ public class IntegerMax { ctest(new LinkedHashSet(), vlist, vmax, size, trials); ctest(new LinkedList(), klist, kmax, size, trials); ctest(new LinkedList(), vlist, vmax, size, trials); + // catest(new LinkedList(), klist, kmax, size, trials); + // catest(new LinkedList(), vlist, vmax, size, trials); ctest(new ConcurrentLinkedQueue(), klist, kmax, size, trials); ctest(new ConcurrentLinkedQueue(), vlist, vmax, size, trials); ctest(new ConcurrentLinkedDeque(), klist, kmax, size, trials); @@ -107,8 +110,7 @@ public class IntegerMax { ctest(new PriorityBlockingQueue(SIZE), vlist, vmax, size, trials); } - if (checksum.get() != 0) - throw new Error("bad computation"); + if (checksum.get() != 0) throw new Error("bad computation"); } static void ctest(Collection c, List klist, int kmax, int size, int trials) @@ -123,6 +125,20 @@ public class IntegerMax { System.out.print(cn + sep()); } + static void catest(Collection c, List klist, int kmax, int size, int trials) + throws Exception { + String cn = c.getClass().getName(); + if (cn.startsWith("java.util.concurrent.")) + cn = cn.substring(21); + else if (cn.startsWith("java.util.")) + cn = cn.substring(10); + cn = cn + ".toArrayList"; + c.addAll(klist); + ArrayList ac = new ArrayList(c); + isptest(ac, kmax, size, trials); + System.out.print(cn + sep()); + } + static void mtest(Map m, Integer[] keys, Integer[] vals, int kmax, int vmax, int size, int trials) throws Exception { String cn = m.getClass().getName(); if (cn.startsWith("java.util.concurrent.")) @@ -141,6 +157,7 @@ public class IntegerMax { long ti = itest(c, max, trials); long ts = stest(c, max, trials); long tp = ptest(c, max, trials); + if (checksum.get() != 0) throw new Error("bad computation"); if (print) { long scale = (long)size * trials; double di = ((double)ti) / scale;