diff --git a/src/mhtree/benchmarking/RunBenchmark.java b/src/mhtree/benchmarking/RunBenchmark.java index 37977bce3e6f5090488083944cf588488cf2522d..9f1bfa9092ad8605995346637a15c178c3a72752 100644 --- a/src/mhtree/benchmarking/RunBenchmark.java +++ b/src/mhtree/benchmarking/RunBenchmark.java @@ -36,7 +36,7 @@ import static mhtree.ObjectToNodeDistance.NEAREST; public class RunBenchmark { public static void main(String[] args) throws IOException, AlgorithmMethodException, InstantiationException, NoSuchMethodException, BucketStorageException { - if (args.length != 7) { + if (args.length != 7 && args.length != 10) { throw new IllegalArgumentException("Unexpected number of params"); } @@ -75,10 +75,17 @@ public class RunBenchmark { Arrays.asList(NEAREST), //Arrays.asList(NEAREST, FURTHEST, AVERAGE), queries, ks); - } else { + } else if (args.length == 7) { // Original M-tree percentageToRecallMTree(cfg, objects, - queries, ks); + queries, ks, + 0, 0, null); + } else { // Pivoting M-tree + List<LocalAbstractObject> pivots = loadDataset(args[9]); + percentageToRecallMTree(cfg, + objects, + queries, ks, + Integer.parseInt(args[7]), Integer.parseInt(args[8]), pivots); } } @@ -175,11 +182,18 @@ public class RunBenchmark { private static void percentageToRecallMTree(MHTreeConfig config, List<LocalAbstractObject> objects, List<LocalAbstractObject> queries, - int[] ks) throws NoSuchMethodException, AlgorithmMethodException, RuntimeException, InstantiationException { + int[] ks, + int pmTreeNPD, int pmTreeNHR, List<LocalAbstractObject> pmTreePivots) throws NoSuchMethodException, AlgorithmMethodException, RuntimeException, InstantiationException { long buildingStartTimeStamp = System.currentTimeMillis(); - MTree mTree = new MTree(config.nodeDegree, config.leafCapacity); + System.out.println("Building M-tree with NPD=" + pmTreeNPD + " and NHR=" + pmTreeNHR); + MTree mTree; + if (pmTreeNHR == 0 && pmTreeNHR == 0) + mTree = new MTree(config.nodeDegree, config.leafCapacity); + else // Pivoting M-tree + mTree = new MTree(config.nodeDegree, config.leafCapacity, + Math.max(pmTreeNPD, pmTreeNHR), pmTreePivots.iterator(), pmTreeNPD, pmTreeNHR); Collections.shuffle(objects); @@ -189,7 +203,7 @@ public class RunBenchmark { long buildingTime = System.currentTimeMillis() - buildingStartTimeStamp; mTree.printStatistics(); - //System.out.println("Fat factor: " + mTree.getFatFactor()); + System.out.println("Fat factor: " + mTree.getFatFactor()); System.out.println("Building time: " + buildingTime + " msec"); System.out.println("kNN queries will be executed for k=" + Arrays.toString(ks));