Example usage for org.apache.lucene.util BitDocIdSet BitDocIdSet

List of usage examples for org.apache.lucene.util BitDocIdSet BitDocIdSet

Introduction

In this page you can find the example usage for org.apache.lucene.util BitDocIdSet BitDocIdSet.

Prototype

public BitDocIdSet(BitSet set, long cost) 

Source Link

Document

Wrap the given BitSet as a DocIdSet .

Usage

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();
}