in src/main/java/org/apache/datasketches/characterization/quantiles/ItemsSketchSpeedProfile.java [76:124]
public void doTrial() {
DoublesSketchAccuracyProfile.shuffle(inputValues);
final long startBuild = System.nanoTime();
final ItemsSketch<Double> sketch = ItemsSketch.getInstance(k, COMPARATOR);
final long stopBuild = System.nanoTime();
buildTimeNs += stopBuild - startBuild;
final long startUpdate = System.nanoTime();
for (int i = 0; i < inputValues.length; i++) {
sketch.update(inputValues[i]);
}
final long stopUpdate = System.nanoTime();
updateTimeNs += stopUpdate - startUpdate;
final long startGetQuantiles = System.nanoTime();
sketch.getQuantiles(numQueryValues);
final long stopGetQuantiles = System.nanoTime();
getQuantilesTimeNs += stopGetQuantiles - startGetQuantiles;
final long startGetCdf = System.nanoTime();
sketch.getCDF(queryValues);
final long stopGetCdf = System.nanoTime();
getCdfTimeNs += stopGetCdf - startGetCdf;
final long startGetRank = System.nanoTime();
for (final double value: queryValues) {
//sketch.getRank(value); //TODO this was not released yet
final double estRank = sketch.getCDF(new Double[] {value})[0];
}
final long stopGetRank = System.nanoTime();
getRankTimeNs += stopGetRank - startGetRank;
final long startSerialize = System.nanoTime();
final byte[] bytes = sketch.toByteArray(SERDE);
final long stopSerialize = System.nanoTime();
serializeTimeNs += stopSerialize - startSerialize;
final WritableMemory mem = WritableMemory.writableWrap(bytes);
final long startDeserialize = System.nanoTime();
ItemsSketch.getInstance(mem, COMPARATOR, SERDE);
final long stopDeserialize = System.nanoTime();
deserializeTimeNs += stopDeserialize - startDeserialize;
// could record the last one since they must be the same
// but let's average across all trials to see if there is an anomaly
numRetainedItems += sketch.getRetainedItems();
serializedSizeBytes += bytes.length;
}