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();
}
}