public void configure()

in src/main/java/org/apache/datasketches/characterization/theta/concurrent/ConcurrentThetaMultithreadedSpeedProfile.java [61:117]


  public void configure() {
    //Configure Sketches
    sharedLgK = Integer.parseInt(prop.mustGet("LgK"));
    localLgK = Integer.parseInt(prop.mustGet("CONCURRENT_THETA_localLgK"));
    ordered = Boolean.parseBoolean(prop.mustGet("CONCURRENT_THETA_ordered"));
    offHeap = Boolean.parseBoolean(prop.mustGet("CONCURRENT_THETA_offHeap"));
    poolThreads = Integer.parseInt(prop.mustGet("CONCURRENT_THETA_poolThreads"));
    maxConcurrencyError = Double.parseDouble(prop.mustGet("CONCURRENT_THETA_maxConcurrencyError"));
    numReaderThreads = Integer.parseInt(prop.mustGet("CONCURRENT_THETA_numReaders"));
    numWriterThreads = Integer.parseInt(prop.mustGet("CONCURRENT_THETA_numWriters"));
    writesRatio = Double.parseDouble(prop.mustGet("CONCURRENT_THETA_writersRatio"));
    isThreadSafe = Boolean.parseBoolean(prop.mustGet("CONCURRENT_THETA_ThreadSafe"));

    final int maxSharedUpdateBytes = Sketch.getMaxUpdateSketchBytes(1 << sharedLgK);

    if (offHeap) {
      wmem = WritableMemory.allocateDirect(maxSharedUpdateBytes);
    } else {
      wmem = null; //WritableMemory.allocate(maxSharedUpdateBytes);
    }
    final UpdateSketchBuilder bldr = configureBuilder();
    //must build shared first
    sharedSketch = bldr.buildShared(wmem);
    if (!isThreadSafe) {
      sharedSketch = bldr.build();
      lock = new ReentrantReadWriteLock();
    }
    ctx = new ConcurrentTestContext();
    for (int i = 0; i < numWriterThreads; i++) {
      final WriterThread writer;
      if (writesRatio != 0) {
        if (isThreadSafe) {
          writer = new ReaderWriterThread(bldr, i, writesRatio);
        } else {
          writer = new LockBasedReaderWriterThread(i, writesRatio);
        }
      } else {
        if (isThreadSafe) {
          writer = new WriterThread(bldr, i);
        } else {
          writer = new LockBasedWriterThread(i);
        }
      }
      ctx.addWriterThread(writer);
    }
    for (int i = 0; i < numReaderThreads; i++) {
      final ReaderThread reader;
      if (isThreadSafe) {
        reader  = new BackgroundReaderThread();
      } else {
        reader = new LockBasedBackgroundReaderThread();
      }
      ctx.addReaderThread(reader);
    }

    ctx.startThreads();
  }