List of usage examples for org.apache.lucene.util BitDocIdSet BitDocIdSet
public BitDocIdSet(BitSet set, long cost)
From source file:DocIdSetBenchmark.java
License:Apache License
public static void main(String[] args) throws IOException, InterruptedException { ScoresRegister reg = new ScoresRegister(); for (float loadFactor : LOAD_FACTORS) { for (Map.Entry<Class<?>, DocIdSet> set : sets(MAX_DOC, loadFactor)) { final long memSize = RamUsageTester.sizeOf(set.getValue()); reg.registerScore("memory", loadFactor, set.getKey(), memSize); System.out.println(set.getKey().getSimpleName() + "\t" + loadFactor + "\t" + memSize); }//from w w w.ja v a 2 s . c o m } System.out.println(); System.out.println("JVM warm-up"); long start = System.nanoTime(); while (System.nanoTime() - start < 30 * SECOND) { final int numBits = 1 << 18; for (float loadFactor : LOAD_FACTORS) { final BitDocIdSet fixedSet = new BitDocIdSet(randomSet(numBits, loadFactor), 0); scoreBuildFixedBitSet(fixedSet, numBits); for (DocIdSetFactory factory : FACTORIES) { scoreBuild(factory, fixedSet, numBits); } for (Map.Entry<Class<?>, DocIdSet> set : sets(numBits, loadFactor)) { score(set.getValue()); score(set.getValue(), 313); } } } // Start the test System.out.println("LoadFactor\tBenchmark\tImplementation\tScore"); for (int i = 0; i < 3; ++i) { for (float load : LOAD_FACTORS) { final Collection<Map.Entry<Class<?>, DocIdSet>> sets = sets(MAX_DOC, load); // Free memory so that GC doesn't kick in while the benchmark is running System.gc(); Thread.sleep(5 * 1000); DocIdSet fastestSet = null; for (Map.Entry<Class<?>, DocIdSet> set : sets) { fastestSet = set.getValue(); if (set.getValue() instanceof RoaringDocIdSet) { // fastest at nextDoc break; } } long score = scoreBuildFixedBitSet(fastestSet, MAX_DOC); reg.registerScore("build", load, FixedBitSet.class, score); System.out.println(load + "\tbuild\t" + FixedBitSet.class.getSimpleName() + "\t" + score); for (DocIdSetFactory factory : FACTORIES) { score = scoreBuild(factory, fastestSet, MAX_DOC); reg.registerScore("build", load, factory.getKey(), score); System.out.println(load + "\tbuild\t" + factory.getKey().getSimpleName() + "\t" + score); } System.gc(); Thread.sleep(5 * 1000); for (Map.Entry<Class<?>, DocIdSet> set : sets) { score = score(set.getValue()); reg.registerScore("nextDoc", load, set.getKey(), score); System.out.println( load + "\tnextDoc()\t" + set.getKey().getSimpleName() + "\t" + score(set.getValue())); } for (int inc : new int[] { 1, 31, 313, 3571, 33533, 319993 }) { // primes final String key = "advance(" + inc + ")"; for (Map.Entry<Class<?>, DocIdSet> set : sets) { score = score(set.getValue(), inc); reg.registerScore(key, load, set.getKey(), score); System.out.println(load + "\t" + key + "\t" + set.getKey().getSimpleName() + "\t" + score); } } } } System.out.println("DONE " + DUMMY); System.out.println("Tables for Google charts:"); reg.printChartsTables(); }