in src/main/java/org/apache/datasketches/characterization/uniquecount/BaseBoundsAccuracyProfile.java [110:162]
private void doTrials() {
final int minT = 1 << lgMinT;
final int maxT = 1 << lgMaxT;
final int maxU = 1 << lgMaxU;
//This will generate a table of data up for each intermediate Trials point
int lastT = 0;
while (lastT < maxT) {
final int nextT = lastT == 0 ? minT : (int)pwr2SeriesNext(tPPO, lastT);
final int delta = nextT - lastT;
for (int i = 0; i < delta; i++) {
doTrial();
}
lastT = nextT;
final StringBuilder sb = new StringBuilder();
if (nextT < maxT) { // intermediate
if (interData) {
job.println(getHeader());
process(qArr, lastT, sb);
job.println(sb.toString());
}
} else { //done
job.println(getHeader());
process(qArr, lastT, sb);
job.println(sb.toString());
}
job.println(prop.extractKvPairs());
job.println("Cum Trials : " + lastT);
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 / lastT;
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 - lastT));
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();
}
}