Package com.browseengine.bobo.test

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

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.BrowseFacet;
import com.browseengine.bobo.api.FacetAccessible;
import com.browseengine.bobo.api.FacetSpec;
import com.browseengine.bobo.api.FacetSpec.FacetSortSpec;
import com.browseengine.bobo.facets.CombinedFacetAccessible;
import com.browseengine.bobo.facets.data.FacetDataCache;
import com.browseengine.bobo.facets.data.TermIntList;
import com.browseengine.bobo.facets.data.TermValueList;
import com.browseengine.bobo.facets.impl.SimpleFacetHandler.SimpleFacetCountCollector;
import com.browseengine.bobo.util.BigIntArray;

public class FacetMergePerfTest {
  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;
  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";
    String fname2 = "facet2";
    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 List<FacetAccessible> list2 = new ArrayList<FacetAccessible>(numSegs);
    for (int i=0;i<numSegs;++i){
      list2.add(buildSubAccessible(fname2, 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(){
       
        public void run() {
         
          for (int i=0;i<numIters;++i){
            long start = System.nanoTime();
            final CombinedFacetAccessible combined1 = new CombinedFacetAccessible(fspec, list1);
           // final CombinedFacetAccessible combined2 = new CombinedFacetAccessible(fspec, list2);
            List<BrowseFacet> facets1 = combined1.getFacets();
            //List<BrowseFacet> facets2 = combined2.getFacets();
            long end= System.nanoTime();
            timeCounter.getAndAdd(end-start);
          }
        }
       
      });
    }

//    System.out.println("press key to start load test... ");
//    {
//      BufferedReader br = new BufferedReader(new InputStreamReader(
//          System.in));
//      int ch = br.read();
//      char c = (char) ch;
//    }
    for (Thread t : threads){
      t.start();
    }
   
    for (Thread t : threads){
      t.join();
    }
   
    System.out.println("average time: "+timeCounter.get()/numIters/nThreads/1000000+" ms");
   
  }
 
  public static void main1(String[] args) {
    //Comparable c = "00000000001";
    //Comparable c2 ="00000000002";
  //  Comparable c = Integer.valueOf(1);
  //  Comparable c2 = Integer.valueOf(2);

    DecimalFormat formatter = new DecimalFormat("0000000000");
   
    int count = 500000;
    TermValueList list = new TermIntList(count,"0000000000");
    for (int i=0;i<count;++i){
      list.add(formatter.format(i));
    }
    /*IntList list = new IntArrayList(count);
    for (int i=0;i<count;++i){
      list.add(i);
    }*/
    int v1 =1;
    int v2=2;
    System.out.println("start");
    long s=System.currentTimeMillis();
    for (int i =0;i<count;++i){
      list.getRawValue(i);
    }
    long e=System.currentTimeMillis();
   
    System.out.println("timeL: "+(e-s));
  }

}
TOP

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

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.