private void doTrials()

in src/main/java/org/apache/datasketches/characterization/uniquecount/BaseAccuracyProfile.java [120:172]


  private void doTrials() {
    final int minT = 1 << lgMinT;
    final int maxT = 1 << lgMaxT;
    final long maxU = 1L << lgMaxU;

    //This will generate a table of data for each intermediate Trials point
    int lastTpt = 0;
    while (lastTpt < maxT) {
      final int nextT = lastTpt == 0 ? minT : (int)pwr2SeriesNext(tPPO, lastTpt);
      final int delta = nextT - lastTpt;
      for (int i = 0; i < delta; i++) {
        doTrial();
      }
      lastTpt = nextT;
      final StringBuilder sb = new StringBuilder();
      if (nextT < maxT) { // intermediate
        if (interData) {
          job.println(getHeader());
          process(getSize, qArr, lastTpt, sb);
          job.println(sb.toString());
        }
      } else { //done
        job.println(getHeader());
        process(getSize, qArr, lastTpt, sb);
        job.println(sb.toString());
      }

      job.println(prop.extractKvPairs());
      job.println("Cum Trials             : " + lastTpt);
      job.println("Cum Updates            : " + vIn);
      final long currentTime_mS = System.currentTimeMillis();
      final long cumTime_mS = currentTime_mS - job.getStartTime();
      job.println("Cum Time               : " + milliSecToString(cumTime_mS));
      final double timePerTrial_mS = cumTime_mS * 1.0 / lastTpt;
      final double avgUpdateTime_ns = timePerTrial_mS * 1e6 / maxU;
      job.println("Time Per Trial, mSec   : " + timePerTrial_mS);
      job.println("Avg Update Time, nSec  : " + avgUpdateTime_ns);
      job.println("Date Time              : "
          + job.getReadableDateString(currentTime_mS));

      final long timeToComplete_mS = (long)(timePerTrial_mS * (maxT - lastTpt));
      job.println("Est Time to Complete   : " + milliSecToString(timeToComplete_mS));
      job.println("Est Time at Completion : "
          + job.getReadableDateString(timeToComplete_mS + currentTime_mS));
      job.println("");
      if (postPMFs) {
        for (int i = 0; i < qArr.length; i++) {
          job.println(outputPMF(qArr[i]));
        }
      }
      job.flush();
    }
  }