private void processInputStream()

in src/main/java/org/apache/datasketches/characterization/quantiles/DruidAppHistStreamAProfile.java [103:167]


  private void processInputStream() {
    checkIfZipped(srcFileName);

    //Read
    job.println("Input Lines Processed: ");
    final LineReader lineReader = new LineReader(srcFileName);

    final long startReadTime_nS = System.nanoTime();
    lineReader.read(0, proc);
    final long readTime_nS = System.nanoTime() - startReadTime_nS;

    //print hist stats
    job.println(ahist.toString().replace(", ", "\n").replace("*", ""));
    job.println("Max Storage Size: " + ahist.getMaxStorageSize());

    //CDF
    final float[] fracRanks = buildRanksArr(numRanks);
    final long startCdfTime_nS = System.nanoTime();
    final float[] quantiles = ahist.getQuantiles(fracRanks);
    final long cdfTime_nS = System.nanoTime() - startCdfTime_nS;

    job.println("");
    job.println("CDF");
    job.println(String.format(cdfHdr, "Index", "Rank", "Quantile"));
    for (int i = 0; i < numRanks; i++) {
      final String s = String.format(cdfFmt, i, fracRanks[i], (int)quantiles[i]);
      job.println(s);
    }
    job.println("");

    //print PMF histogram, using Points Per Log Base.
    minV = ahist.getMin();
    maxV = ahist.getMax();
    numItems = ahist.count();
    final double[] splitpoints = buildSplitPointsArr(minV, maxV, pplb, logBase, eps);
    numSP = splitpoints.length;
    spArr = new float[numSP];
    for (int i = 0; i < numSP; i++) { spArr[i] = (float) splitpoints[i]; }

    //PMF
    final long startPmfTime_nS = System.nanoTime();
    final Histogram hist = ahist.toHistogram(spArr);

    final double[] breaksArr = hist.getBreaks();
    final double[] countsArr = hist.getCounts();
    final long pmfTime_nS = System.nanoTime() - startPmfTime_nS;
    final int lenBreaks = breaksArr.length;

    job.println("PMF");
    job.println(String.format(pmfHdr, "Index", "Quantile", "Mass"));
    int i;
    for (i = 0; i < lenBreaks - 1; i++) {
      job. println(String.format(pmfFmt, i, breaksArr[i], countsArr[i]));
    }
    job.println(String.format(pmfFmt, i, breaksArr[i], 0.0)); // the last point

    final double readTime_S = readTime_nS / 1E9;
    job.println("");
    job.println(String.format("ReadTime_Sec  :\t%10.3f", readTime_S));
    job.println(String.format("ReadRate/Sec  :\t%,10.0f", numItems / readTime_S));
    job.println(String.format("CdfTime_mSec  :\t%10.3f", cdfTime_nS / 1E6));
    job.println(String.format("Cdf/Point_nSec:\t%10.3f", (double)cdfTime_nS / numRanks));
    job.println(String.format("PmfTime_mSec  :\t%10.3f", pmfTime_nS / 1E6));
    job.println(String.format("Pmf/Point_nSec:\t%10.3f", (double)pmfTime_nS / lenBreaks));
  }