blob: 5cefe78dd7ebb2b33e8e2ee5e920890e785430e3 [file] [log] [blame]
/*
* Copyright 2015, Yahoo! Inc.
* Licensed under the terms of the Apache License 2.0. See LICENSE file at the project root for terms.
*/
package com.yahoo.sketches.performance;
import com.yahoo.sketches.hll.HllSketch;
import com.yahoo.sketches.theta.UpdateSketch;
/**
* Holds key metrics from a single trial
*
* @author Lee Rhodes
*/
public class Stats implements Comparable<Stats> {
double estimate; //The estimate from the sketch
double re = 0; //Relative Error. Will sort by this
double lb2est; //LowerBound estimate at -2 StdDev
double lb1est; //LowerBound estimate at -1 StdDev
double ub1est; //UpperBound estimate at +1 StdDev
double ub2est; //UpperBound estimate at +2 StdDev
double updateTimePerU_nS;
/**
* Update this Stats with a theta UpdateSketch
* @param sketch the sketch to update with
* @param uPerTrial the number of uniques fed to the sketch in this trial
* @param updateTime_nS the update time requred for all the updates in nanoSeconds.
*/
public void update(UpdateSketch sketch, int uPerTrial, long updateTime_nS) {
estimate = sketch.getEstimate();
re = estimate/uPerTrial - 1.0;
lb2est = sketch.getLowerBound(2);
lb1est = sketch.getLowerBound(1);
ub1est = sketch.getUpperBound(1);
ub2est = sketch.getUpperBound(2);
updateTimePerU_nS = (double)updateTime_nS / uPerTrial;
}
/**
* Update this Stats with an HLL Sketch
* @param sketch the sketch to update with
* @param uPerTrial the number of uniques fed to the sketch in this trial
* @param updateTime_nS the update time requred for all the updates in nanoSeconds.
*/
public void update(HllSketch sketch, int uPerTrial, long updateTime_nS) {
estimate = sketch.getEstimate();
re = estimate/uPerTrial - 1.0;
lb2est = sketch.getLowerBound(2);
lb1est = sketch.getLowerBound(1);
ub1est = sketch.getUpperBound(1);
ub2est = sketch.getUpperBound(2);
updateTimePerU_nS = (double)updateTime_nS / uPerTrial;
}
@Override
public int compareTo(Stats that) {
return (this.re < that.re)? -1 : (this.re > that.re)? 1 : 0;
}
}