Package com.browseengine.bobo.test

Source Code of com.browseengine.bobo.test.FacetMergePerf

package com.browseengine.bobo.test;

import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.concurrent.atomic.AtomicLong;

import com.browseengine.bobo.api.FacetAccessible;
import com.browseengine.bobo.api.FacetSpec;
import com.browseengine.bobo.api.FacetSpec.FacetSortSpec;
import com.browseengine.bobo.facets.data.FacetDataCache;
import com.browseengine.bobo.facets.data.TermIntList;
import com.browseengine.bobo.facets.impl.SimpleFacetHandler.SimpleFacetCountCollector;
import com.browseengine.bobo.util.BigIntArray;

public class FacetMergePerf {
  static int numVals = 100000;
  static int numDocs = 5000000;
  static int numSegs = 10;
  static int numDocsPerSeg = numDocs / numSegs;
  static Random rand = new Random();

  static int percent_zero = 80;

  @SuppressWarnings({ "rawtypes", "unchecked" })
  static FacetDataCache makeFacetDataCache() {
    FacetDataCache cache = new FacetDataCache();
    cache.freqs = new int[numVals];
    Random r = new Random();
    for (int i = 0; i < cache.freqs.length; ++i) {
      int p = r.nextInt(100);
      int v;
      if (p % 100 < percent_zero) {
        v = 0;
      } else {
        v = Math.abs(rand.nextInt(numDocs - 1)) + 1;
      }

      cache.freqs[i] = v;
    }
    // Arrays.fill(cache.freqs,1);
    cache.maxIDs = new int[numVals];
    cache.minIDs = new int[numVals];
    cache.valArray = new TermIntList(numVals, "0000000000");
    DecimalFormat formatter = new DecimalFormat("0000000000");

    for (int i = 0; i < numVals; ++i) {
      cache.valArray.add(formatter.format(i + 1));
    }
    cache.valArray.seal();
    cache.orderArray = new BigIntArray(numDocsPerSeg);
    return cache;
  }

  static FacetAccessible buildSubAccessible(String name, int segment, FacetSpec fspec) {

    SimpleFacetCountCollector collector = new SimpleFacetCountCollector(name, makeFacetDataCache(),
        numDocsPerSeg * segment, null, fspec);
    collector.collectAll();
    return collector;
  }

  /**
   * @param args
   */
  public static void main(String[] args) throws Exception {
    int nThreads = 2;
    final int numIters = 200;

    String fname1 = "facet1";
    final FacetSpec fspec = new FacetSpec();
    fspec.setExpandSelection(true);
    fspec.setMaxCount(50);
    fspec.setMinHitCount(1);
    fspec.setOrderBy(FacetSortSpec.OrderHitsDesc);

    final List<FacetAccessible> list1 = new ArrayList<FacetAccessible>(numSegs);
    for (int i = 0; i < numSegs; ++i) {
      list1.add(buildSubAccessible(fname1, i, fspec));
    }

    final AtomicLong timeCounter = new AtomicLong();
    Thread[] threads = new Thread[nThreads];
    for (int i = 0; i < threads.length; ++i) {
      threads[i] = new Thread(new Runnable() {

        @Override
        public void run() {

          for (int i = 0; i < numIters; ++i) {
            long start = System.nanoTime();
            long end = System.nanoTime();
            timeCounter.getAndAdd(end - start);
          }
        }

      });
    }

    for (Thread t : threads) {
      t.start();
    }

    for (Thread t : threads) {
      t.join();
    }

    System.out
        .println("average time: " + timeCounter.get() / numIters / nThreads / 1000000 + " ms");

  }
}
TOP

Related Classes of com.browseengine.bobo.test.FacetMergePerf

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.