You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datasketches.apache.org by le...@apache.org on 2022/04/23 18:00:43 UTC

[datasketches-characterization] branch master updated: Refactor & cleanup characterization hierarchy

This is an automated email from the ASF dual-hosted git repository.

leerho pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/datasketches-characterization.git


The following commit(s) were added to refs/heads/master by this push:
     new e1c53e6  Refactor & cleanup characterization hierarchy
e1c53e6 is described below

commit e1c53e6c408a534a6252dd3eda33b01bbc04f15c
Author: Lee Rhodes <le...@users.noreply.github.com>
AuthorDate: Sat Apr 23 10:59:41 2022 -0700

    Refactor & cleanup characterization hierarchy
    
    Moving tests into a proper hierarchy.
    
    Eliminating excess lines, adding finals.
---
 .../org/apache/datasketches/MonotonicPoints.java   |  2 +-
 .../java/org/apache/datasketches/SpacedPoints.java |  3 -
 .../{quantiles => }/ProfileUtil.java               |  3 +-
 .../datasketches/characterization/Shuffle.java     |  2 +-
 .../characterization/cpc/CpcSerDeProfile.java      |  1 -
 .../characterization/fdt/FdtAccuracyProfile.java   |  2 -
 .../hash/HashBytesSpeedProfile.java                |  2 -
 .../hll/HllConfidenceIntervalInverseProfile.java   |  1 -
 .../characterization/hll/HllMergeSpeedProfile.java |  1 -
 ...llDoublesSketchRankGaussianAccuracyProfile.java |  2 +-
 ...KllFloatsSketchRankGaussianAccuracyProfile.java |  8 +--
 .../KllFloatsSketchSpeedProfile.java               | 13 +++--
 .../KllSketchAccuracyProfile.java                  |  9 +--
 .../KllSketchSizeSpeedProfile.java                 | 66 ++++++++++++++++------
 .../characterization/kll/package-info.java         |  1 +
 .../characterization/memory/BaseSpeedProfile.java  |  1 -
 .../memory/HeapUtf8SpeedProfile.java               |  3 -
 .../memory/MemoryDirectSpeedProfile.java           |  2 -
 .../memory/UnsafeDirectSpeedProfile.java           |  1 -
 .../quantiles/BaseQuantilesAccuracyProfile.java    |  6 +-
 .../quantiles/BaseQuantilesSpeedProfile.java       | 10 ++--
 .../quantiles/DoublesSketchAccuracyProfile.java    |  6 +-
 .../quantiles/DoublesSketchSpeedProfile.java       | 12 ++--
 .../quantiles/DruidAppHistStreamAProfile.java      |  2 +-
 .../quantiles/ExactStreamAProfile.java             |  4 +-
 .../quantiles/ItemsSketchAccuracyProfile.java      |  6 +-
 .../quantiles/ItemsSketchSpeedProfile.java         | 10 ++--
 .../quantiles/MSketchStreamAProfile.java           |  1 -
 .../quantiles/QuantilesStreamAProfile.java         |  2 +-
 .../quantiles/tdigest/TDigestSpeedProfile.java     | 11 +---
 .../characterization/req}/FlipFlopStream.java      | 14 ++---
 .../req}/ReqMergeSpeedProfile.java                 | 13 +++--
 .../req}/ReqSketchAccuracyProfile.java             | 31 +++++-----
 .../req}/ReqSketchAccuracyProfile2.java            | 20 +++----
 .../req}/ReqSketchLongSizeSpeedProfile.java        |  2 +-
 .../req}/ReqSketchSizeSpeedProfile.java            |  5 +-
 .../characterization/req}/StreamMaker.java         | 38 +++++++------
 .../characterization/req}/TrueFloatRanks.java      | 20 +++----
 .../theta/ThetaUpdateSpeedProfile.java             |  1 -
 .../concurrent/ConcurrentThetaAccuracyProfile.java |  1 -
 .../ConcurrentThetaMultithreadedSpeedProfile.java  |  2 -
 .../tuple/AodSketchUpdateSpeedProfile.java         |  1 -
 .../uniquecount/BaseMergeSpeedProfile2.java        |  1 -
 .../KllFloatsSketchRankGaussianAccuracyJob.conf    |  2 +-
 .../resources/quantiles/KllSketchAccuracyJob.conf  |  6 +-
 .../resources/quantiles/KllSketchSizeSpeedJob.conf |  4 +-
 tools/SketchesCheckstyle.xml                       |  1 +
 47 files changed, 184 insertions(+), 171 deletions(-)

diff --git a/src/main/java/org/apache/datasketches/MonotonicPoints.java b/src/main/java/org/apache/datasketches/MonotonicPoints.java
index bb4205d..488e1d0 100644
--- a/src/main/java/org/apache/datasketches/MonotonicPoints.java
+++ b/src/main/java/org/apache/datasketches/MonotonicPoints.java
@@ -142,7 +142,7 @@ public class MonotonicPoints {
    * This is not a simple linear function due to points that may be skipped in the low range.
    * @param lgStart Log2 of the starting value
    * @param lgEnd Log2 of the ending value
-   * @param ppo the number of logrithmically evenly spaced points per octave.
+   * @param ppo the number of logarithmically evenly spaced points per octave.
    * @return the actual number of plotting points between lgStart and lgEnd.
    */
   public static final int countPoints(final int lgStart, final int lgEnd, final int ppo) {
diff --git a/src/main/java/org/apache/datasketches/SpacedPoints.java b/src/main/java/org/apache/datasketches/SpacedPoints.java
index 1e0aa30..2bbdc33 100644
--- a/src/main/java/org/apache/datasketches/SpacedPoints.java
+++ b/src/main/java/org/apache/datasketches/SpacedPoints.java
@@ -159,8 +159,5 @@ public class SpacedPoints {
     return arr;
   }
 
-
-
-
   static void println(final Object o) { System.out.println(o.toString()); }
 }
diff --git a/src/main/java/org/apache/datasketches/characterization/quantiles/ProfileUtil.java b/src/main/java/org/apache/datasketches/characterization/ProfileUtil.java
similarity index 98%
rename from src/main/java/org/apache/datasketches/characterization/quantiles/ProfileUtil.java
rename to src/main/java/org/apache/datasketches/characterization/ProfileUtil.java
index e5b531c..c99fe25 100644
--- a/src/main/java/org/apache/datasketches/characterization/quantiles/ProfileUtil.java
+++ b/src/main/java/org/apache/datasketches/characterization/ProfileUtil.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.datasketches.characterization.quantiles;
+package org.apache.datasketches.characterization;
 
 import static java.lang.Math.ceil;
 import static java.lang.Math.max;
@@ -25,7 +25,6 @@ import static org.apache.datasketches.Util.ceilingPowerOfBdouble;
 import static org.apache.datasketches.Util.logB;
 import static org.apache.datasketches.Util.pwrLawNextDouble;
 
-
 /**
  * @author Lee Rhodes
  */
diff --git a/src/main/java/org/apache/datasketches/characterization/Shuffle.java b/src/main/java/org/apache/datasketches/characterization/Shuffle.java
index d0cdef9..340b02e 100644
--- a/src/main/java/org/apache/datasketches/characterization/Shuffle.java
+++ b/src/main/java/org/apache/datasketches/characterization/Shuffle.java
@@ -24,7 +24,7 @@ import java.util.Random;
 /**
  * @author Lee Rhodes
  */
-public class Shuffle {
+public final class Shuffle {
   private static final Random rand = new Random();
 
   /**
diff --git a/src/main/java/org/apache/datasketches/characterization/cpc/CpcSerDeProfile.java b/src/main/java/org/apache/datasketches/characterization/cpc/CpcSerDeProfile.java
index a6b8c14..b225994 100644
--- a/src/main/java/org/apache/datasketches/characterization/cpc/CpcSerDeProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/cpc/CpcSerDeProfile.java
@@ -33,7 +33,6 @@ public class CpcSerDeProfile extends BaseSerDeProfile {
     sketch = new CpcSketch(lgK);
   }
 
-
   @Override
   public void doTrial(final long[] stats, final int uPerTrial) {
     sketch.reset(); // reuse the same sketch
diff --git a/src/main/java/org/apache/datasketches/characterization/fdt/FdtAccuracyProfile.java b/src/main/java/org/apache/datasketches/characterization/fdt/FdtAccuracyProfile.java
index daf1eba..36eabbc 100644
--- a/src/main/java/org/apache/datasketches/characterization/fdt/FdtAccuracyProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/fdt/FdtAccuracyProfile.java
@@ -257,8 +257,6 @@ public class FdtAccuracyProfile implements JobProfile {
     return q / u - 1.0;
   }
 
-
-
   class MyComparator implements Comparator<AccuracyStats> {
     @Override
     public int compare(final AccuracyStats o1, final AccuracyStats o2) {
diff --git a/src/main/java/org/apache/datasketches/characterization/hash/HashBytesSpeedProfile.java b/src/main/java/org/apache/datasketches/characterization/hash/HashBytesSpeedProfile.java
index 03a58a4..6ab9152 100644
--- a/src/main/java/org/apache/datasketches/characterization/hash/HashBytesSpeedProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/hash/HashBytesSpeedProfile.java
@@ -86,7 +86,6 @@ public class HashBytesSpeedProfile extends BaseHashSpeedProfile {
     @Override
     public String getRow() {
       final double trialsBytes = trials * x;
-
       final double lgBytesX = Math.log(x) / LN2;
       final double total_mS = sumTrials_nS / 1e6;
       final double avgBytesFill_nS = sumTrialsFill_nS / trialsBytes;
@@ -170,7 +169,6 @@ public class HashBytesSpeedProfile extends BaseHashSpeedProfile {
     vIn = myVin;
   }
 
-  @SuppressWarnings("restriction")
   private static final long readMem(final WritableMemory wmem) {
     long sumInput = 0;
     long rem = wmem.getCapacity();
diff --git a/src/main/java/org/apache/datasketches/characterization/hll/HllConfidenceIntervalInverseProfile.java b/src/main/java/org/apache/datasketches/characterization/hll/HllConfidenceIntervalInverseProfile.java
index 341bc13..6f9945a 100644
--- a/src/main/java/org/apache/datasketches/characterization/hll/HllConfidenceIntervalInverseProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/hll/HllConfidenceIntervalInverseProfile.java
@@ -38,7 +38,6 @@ import org.apache.datasketches.quantiles.DoublesSketch;
 import org.apache.datasketches.quantiles.DoublesSketchBuilder;
 import org.apache.datasketches.quantiles.UpdateDoublesSketch;
 
-
 /**
  * @author Lee Rhodes
  */
diff --git a/src/main/java/org/apache/datasketches/characterization/hll/HllMergeSpeedProfile.java b/src/main/java/org/apache/datasketches/characterization/hll/HllMergeSpeedProfile.java
index f726cb4..425d6fc 100644
--- a/src/main/java/org/apache/datasketches/characterization/hll/HllMergeSpeedProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/hll/HllMergeSpeedProfile.java
@@ -73,7 +73,6 @@ public class HllMergeSpeedProfile extends BaseMergeSpeedProfile {
     return sk;
   }
 
-
   @Override
   public void doTrial(final Stats stats, final int lgK, final int lgDeltaU) {
     //final int U = 1 << (lgK + lgDeltaU);
diff --git a/src/main/java/org/apache/datasketches/characterization/quantiles/KllDoublesSketchRankGaussianAccuracyProfile.java b/src/main/java/org/apache/datasketches/characterization/kll/KllDoublesSketchRankGaussianAccuracyProfile.java
similarity index 99%
rename from src/main/java/org/apache/datasketches/characterization/quantiles/KllDoublesSketchRankGaussianAccuracyProfile.java
rename to src/main/java/org/apache/datasketches/characterization/kll/KllDoublesSketchRankGaussianAccuracyProfile.java
index 3c53e94..d76e929 100644
--- a/src/main/java/org/apache/datasketches/characterization/quantiles/KllDoublesSketchRankGaussianAccuracyProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/kll/KllDoublesSketchRankGaussianAccuracyProfile.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.datasketches.characterization.quantiles;
+package org.apache.datasketches.characterization.kll;
 
 import static java.lang.Math.round;
 import static org.apache.datasketches.GaussianRanks.GAUSSIANS_3SD;
diff --git a/src/main/java/org/apache/datasketches/characterization/quantiles/KllFloatsSketchRankGaussianAccuracyProfile.java b/src/main/java/org/apache/datasketches/characterization/kll/KllFloatsSketchRankGaussianAccuracyProfile.java
similarity index 97%
rename from src/main/java/org/apache/datasketches/characterization/quantiles/KllFloatsSketchRankGaussianAccuracyProfile.java
rename to src/main/java/org/apache/datasketches/characterization/kll/KllFloatsSketchRankGaussianAccuracyProfile.java
index 89454f9..b0e02fd 100644
--- a/src/main/java/org/apache/datasketches/characterization/quantiles/KllFloatsSketchRankGaussianAccuracyProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/kll/KllFloatsSketchRankGaussianAccuracyProfile.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.datasketches.characterization.quantiles;
+package org.apache.datasketches.characterization.kll;
 
 import static java.lang.Math.round;
 import static org.apache.datasketches.GaussianRanks.GAUSSIANS_3SD;
@@ -35,7 +35,6 @@ import org.apache.datasketches.quantiles.DoublesSketch;
 import org.apache.datasketches.quantiles.DoublesSketchBuilder;
 import org.apache.datasketches.quantiles.UpdateDoublesSketch;
 
-
 /**
  * @author Lee Rhodes
  */
@@ -48,7 +47,7 @@ public class KllFloatsSketchRankGaussianAccuracyProfile implements JobProfile {
   private int lgMin;
   private int lgMax;
   private int lgDelta;
-  private int ppo; //not currently used
+  private int ppo; //not used for rank accuracy
 
   private int numTrials; //num of Trials per plotPoint
   private int errorSkLgK; //size of the error quantiles sketches
@@ -169,7 +168,8 @@ public class KllFloatsSketchRankGaussianAccuracyProfile implements JobProfile {
     job.printfData(sFmt, (Object[])columnLabels);
 
     //build the stream
-    //the values themselves reflect their integer ranks starting with 1 (except for LT)
+    //Assuming LE, the values/n are their ranks.
+    //Assuming LT, the (values - 1)/n are their ranks.
     stream = new float[streamLength];
     for (int sl = 1; sl <= streamLength; sl++) { stream[sl - 1] = sl; } //1 to SL
 
diff --git a/src/main/java/org/apache/datasketches/characterization/quantiles/KllFloatsSketchSpeedProfile.java b/src/main/java/org/apache/datasketches/characterization/kll/KllFloatsSketchSpeedProfile.java
similarity index 92%
rename from src/main/java/org/apache/datasketches/characterization/quantiles/KllFloatsSketchSpeedProfile.java
rename to src/main/java/org/apache/datasketches/characterization/kll/KllFloatsSketchSpeedProfile.java
index 5bb4387..bbb8dc9 100644
--- a/src/main/java/org/apache/datasketches/characterization/quantiles/KllFloatsSketchSpeedProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/kll/KllFloatsSketchSpeedProfile.java
@@ -17,12 +17,13 @@
  * under the License.
  */
 
-package org.apache.datasketches.characterization.quantiles;
+package org.apache.datasketches.characterization.kll;
 
 import java.util.Arrays;
 import java.util.Random;
 
 import org.apache.datasketches.Properties;
+import org.apache.datasketches.characterization.quantiles.BaseQuantilesSpeedProfile;
 import org.apache.datasketches.kll.KllFloatsSketch;
 import org.apache.datasketches.memory.Memory;
 
@@ -47,13 +48,13 @@ public class KllFloatsSketchSpeedProfile extends BaseQuantilesSpeedProfile {
   long serializedSizeBytes;
 
   @Override
-  void configure(final int k, final int numQueryValues, final Properties properties) {
+  public void configure(final int k, final int numQueryValues, final Properties properties) {
     this.k = k;
     this.numQueryValues = numQueryValues;
   }
 
   @Override
-  void prepareTrial(final int streamLength) {
+  public void prepareTrial(final int streamLength) {
     // prepare input data
     inputValues = new float[streamLength];
     for (int i = 0; i < streamLength; i++) {
@@ -73,7 +74,7 @@ public class KllFloatsSketchSpeedProfile extends BaseQuantilesSpeedProfile {
   }
 
   @Override
-  void doTrial() {
+  public void doTrial() {
     final long startBuild = System.nanoTime();
     final KllFloatsSketch sketch = KllFloatsSketch.newHeapInstance(k);
     //final KllFloatsSketch sketch = new KllFloatsSketch(k);
@@ -129,12 +130,12 @@ public class KllFloatsSketchSpeedProfile extends BaseQuantilesSpeedProfile {
   }
 
   @Override
-  String getHeader() {
+  public String getHeader() {
     return "Stream\tTrials\tBuild\tUpdate\tQuant\tQuants\tRank\tCDF\tSer\tDeser\tItems\tstatsSize";
   }
 
   @Override
-  String getStats(final int streamLength, final int numTrials, final int numQueryValues) {
+  public String getStats(final int streamLength, final int numTrials, final int numQueryValues) {
     return String.format("%d\t%d\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%d\t%d",
       streamLength,
       numTrials,
diff --git a/src/main/java/org/apache/datasketches/characterization/quantiles/KllSketchAccuracyProfile.java b/src/main/java/org/apache/datasketches/characterization/kll/KllSketchAccuracyProfile.java
similarity index 95%
rename from src/main/java/org/apache/datasketches/characterization/quantiles/KllSketchAccuracyProfile.java
rename to src/main/java/org/apache/datasketches/characterization/kll/KllSketchAccuracyProfile.java
index 6e2061f..337bc9f 100644
--- a/src/main/java/org/apache/datasketches/characterization/quantiles/KllSketchAccuracyProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/kll/KllSketchAccuracyProfile.java
@@ -17,11 +17,12 @@
  * under the License.
  */
 
-package org.apache.datasketches.characterization.quantiles;
+package org.apache.datasketches.characterization.kll;
 
 import static org.apache.datasketches.characterization.Shuffle.shuffle;
 
 import org.apache.datasketches.Properties;
+import org.apache.datasketches.characterization.quantiles.BaseQuantilesAccuracyProfile;
 import org.apache.datasketches.kll.KllDoublesSketch;
 import org.apache.datasketches.kll.KllFloatsSketch;
 import org.apache.datasketches.memory.DefaultMemoryRequestServer;
@@ -49,7 +50,7 @@ public class KllSketchAccuracyProfile extends BaseQuantilesAccuracyProfile {
   KllFloatsSketch fsk = null;
 
   @Override
-  void configure(final Properties props) {
+  public void configure(final Properties props) {
     k = Integer.parseInt(props.mustGet("K"));
     useBulk = Boolean.parseBoolean(props.mustGet("useBulk"));
     direct = Boolean.parseBoolean(props.mustGet("direct"));
@@ -78,7 +79,7 @@ public class KllSketchAccuracyProfile extends BaseQuantilesAccuracyProfile {
   }
 
   @Override
-  void prepareTrial(final int streamLength) {
+  public void prepareTrial(final int streamLength) {
     // prepare input data that will be permuted
     if (useDouble) {
       inputDoubleValues = new double[streamLength];
@@ -108,7 +109,7 @@ public class KllSketchAccuracyProfile extends BaseQuantilesAccuracyProfile {
   }
 
   @Override
-  double doTrial() {
+  public double doTrial() {
     double maxRankError = 0;
     if (useDouble) {
       shuffle(inputDoubleValues);
diff --git a/src/main/java/org/apache/datasketches/characterization/quantiles/KllSketchSizeSpeedProfile.java b/src/main/java/org/apache/datasketches/characterization/kll/KllSketchSizeSpeedProfile.java
similarity index 70%
rename from src/main/java/org/apache/datasketches/characterization/quantiles/KllSketchSizeSpeedProfile.java
rename to src/main/java/org/apache/datasketches/characterization/kll/KllSketchSizeSpeedProfile.java
index 370c0d8..129bfc5 100644
--- a/src/main/java/org/apache/datasketches/characterization/quantiles/KllSketchSizeSpeedProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/kll/KllSketchSizeSpeedProfile.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.datasketches.characterization.quantiles;
+package org.apache.datasketches.characterization.kll;
 
 import static java.lang.Math.log;
 import static java.lang.Math.pow;
@@ -26,13 +26,16 @@ import static org.apache.datasketches.Util.pwr2LawNext;
 import org.apache.datasketches.Job;
 import org.apache.datasketches.JobProfile;
 import org.apache.datasketches.Properties;
+import org.apache.datasketches.kll.KllDoublesSketch;
 import org.apache.datasketches.kll.KllFloatsSketch;
-
+import org.apache.datasketches.memory.DefaultMemoryRequestServer;
+import org.apache.datasketches.memory.WritableMemory;
 
 /**
  * @author Lee Rhodes
  */
 public class KllSketchSizeSpeedProfile implements JobProfile {
+  private static final DefaultMemoryRequestServer memReqSvr = new DefaultMemoryRequestServer();
   private Job job;
   private Properties prop;
 
@@ -41,6 +44,7 @@ public class KllSketchSizeSpeedProfile implements JobProfile {
   private int lgMaxT;
   private int lgMinBpSL;
   private int lgMaxBpSL;
+  private String type;
   //For computing the different stream lengths
   private int lgMinSL;
   private int lgMaxSL;
@@ -49,11 +53,13 @@ public class KllSketchSizeSpeedProfile implements JobProfile {
   private double slope;
 
   //Target sketch configuration & error analysis
-  private int kllK;
+  private int k;
+  private boolean useDouble = false;
+  private boolean direct = false;
 
   //DERIVED & GLOBALS
-  private KllFloatsSketch kllSk;
-
+  private KllDoublesSketch dsk = null;
+  private KllFloatsSketch fsk = null;
 
   private final String[] columnLabels = {"PP", "SL", "Trials", "KllBytes", "Kll nS" };
   private final String sFmt =  "%2s\t%2s\t%6s\t%8s\t%4s\n";
@@ -71,16 +77,33 @@ public class KllSketchSizeSpeedProfile implements JobProfile {
     ppoSL = Integer.parseInt(prop.mustGet("PpoSL"));
 
     //Target sketch config
-    kllK = Integer.parseInt(prop.mustGet("KllK"));
+    k = Integer.parseInt(prop.mustGet("KllK"));
+    type = prop.mustGet("type");
+    if (type.equalsIgnoreCase("double")) { useDouble = true; }
+    direct = Boolean.parseBoolean(prop.mustGet("direct"));
   }
 
   void configureCommon() {
     slope = (double) (lgMaxT - lgMinT) / (lgMinBpSL - lgMaxBpSL);
+
   }
 
   void configureSketch() {
-    kllSk = KllFloatsSketch.newHeapInstance(kllK);
-    // kllSk = new KllFloatsSketch(kllK);
+    if (useDouble) {
+      if (direct) {
+        final WritableMemory dstMem = WritableMemory.allocate(10000);
+        dsk = KllDoublesSketch.newDirectInstance(k, dstMem, memReqSvr);
+      } else { //heap
+        dsk = KllDoublesSketch.newHeapInstance(k);
+      }
+    } else { //useFloat
+      if (direct) {
+        final WritableMemory dstMem = WritableMemory.allocate(10000);
+        fsk = KllFloatsSketch.newDirectInstance(k, dstMem, memReqSvr);
+      } else { //heap
+        fsk = KllFloatsSketch.newHeapInstance(k);
+      }
+    }
   }
 
 //JobProfile interface
@@ -121,7 +144,7 @@ public class KllSketchSizeSpeedProfile implements JobProfile {
         sumUpdateTimePerItem_nS += doTrial(nextSL);
       }
       final double meanUpdateTimePerItem_nS = sumUpdateTimePerItem_nS / trials;
-      final int bytes = kllSk.getSerializedSizeBytes();
+      final int bytes = useDouble ? dsk.getSerializedSizeBytes() : fsk.getSerializedSizeBytes();
       job.printf(dFmt, pp, nextSL, trials, bytes, meanUpdateTimePerItem_nS);
       pp++;
     }
@@ -133,15 +156,26 @@ public class KllSketchSizeSpeedProfile implements JobProfile {
    * @return the average update time per item for this trial
    */
   private double doTrial(final int streamLen) {
-    kllSk = KllFloatsSketch.newHeapInstance(kllK);
-    //kllSk = new KllFloatsSketch(kllK);
-    final long startUpdateTime_nS = System.nanoTime();
+    if (useDouble) {
+      dsk.reset();
+      final long startUpdateTime_nS = System.nanoTime();
 
-    for (int i = 0; i < streamLen; i++) {
-      kllSk.update(i);
+      for (int i = 0; i < streamLen; i++) {
+        dsk.update(i);
+      }
+      final long updateTime_nS = System.nanoTime() - startUpdateTime_nS;
+      return (double) updateTime_nS / streamLen;
+    }
+    else { //use Float
+      fsk.reset();
+      final long startUpdateTime_nS = System.nanoTime();
+
+      for (int i = 0; i < streamLen; i++) {
+        fsk.update(i);
+      }
+      final long updateTime_nS = System.nanoTime() - startUpdateTime_nS;
+      return (double) updateTime_nS / streamLen;
     }
-    final long updateTime_nS = System.nanoTime() - startUpdateTime_nS;
-    return (double) updateTime_nS / streamLen;
   }
 
   /**
diff --git a/src/main/java/org/apache/datasketches/characterization/kll/package-info.java b/src/main/java/org/apache/datasketches/characterization/kll/package-info.java
new file mode 100644
index 0000000..cbcc5f6
--- /dev/null
+++ b/src/main/java/org/apache/datasketches/characterization/kll/package-info.java
@@ -0,0 +1 @@
+package org.apache.datasketches.characterization.kll;
diff --git a/src/main/java/org/apache/datasketches/characterization/memory/BaseSpeedProfile.java b/src/main/java/org/apache/datasketches/characterization/memory/BaseSpeedProfile.java
index b795c92..3e3df81 100644
--- a/src/main/java/org/apache/datasketches/characterization/memory/BaseSpeedProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/memory/BaseSpeedProfile.java
@@ -161,5 +161,4 @@ static class Point {
     return (int) pow(2.0, lgTrials);
   }
 
-
 }
diff --git a/src/main/java/org/apache/datasketches/characterization/memory/HeapUtf8SpeedProfile.java b/src/main/java/org/apache/datasketches/characterization/memory/HeapUtf8SpeedProfile.java
index f585ddd..ea9d5b7 100644
--- a/src/main/java/org/apache/datasketches/characterization/memory/HeapUtf8SpeedProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/memory/HeapUtf8SpeedProfile.java
@@ -92,7 +92,4 @@ public class HeapUtf8SpeedProfile extends BaseUtf8SpeedProfile {
   void close() {
   }
 
-
-
-
 }
diff --git a/src/main/java/org/apache/datasketches/characterization/memory/MemoryDirectSpeedProfile.java b/src/main/java/org/apache/datasketches/characterization/memory/MemoryDirectSpeedProfile.java
index 5fed9c2..8d46858 100644
--- a/src/main/java/org/apache/datasketches/characterization/memory/MemoryDirectSpeedProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/memory/MemoryDirectSpeedProfile.java
@@ -42,7 +42,6 @@ public class MemoryDirectSpeedProfile extends BaseSpeedProfile {
     wh.close();
   }
 
-
   @Override
   long doTrial(final boolean read) {
     final long checkSum = (arrLongs * (arrLongs - 1L)) / 2L;
@@ -67,5 +66,4 @@ public class MemoryDirectSpeedProfile extends BaseSpeedProfile {
     return stopTime_nS - startTime_nS;
   }
 
-
 }
diff --git a/src/main/java/org/apache/datasketches/characterization/memory/UnsafeDirectSpeedProfile.java b/src/main/java/org/apache/datasketches/characterization/memory/UnsafeDirectSpeedProfile.java
index f77711c..945b4b7 100644
--- a/src/main/java/org/apache/datasketches/characterization/memory/UnsafeDirectSpeedProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/memory/UnsafeDirectSpeedProfile.java
@@ -24,7 +24,6 @@ import static org.apache.datasketches.memory.UnsafeUtil.unsafe;
 /**
  * @author Lee Rhodes
  */
-@SuppressWarnings("restriction")
 public class UnsafeDirectSpeedProfile extends BaseSpeedProfile {
   int arrLongs;
   long address;
diff --git a/src/main/java/org/apache/datasketches/characterization/quantiles/BaseQuantilesAccuracyProfile.java b/src/main/java/org/apache/datasketches/characterization/quantiles/BaseQuantilesAccuracyProfile.java
index da2284c..ac9a4d1 100644
--- a/src/main/java/org/apache/datasketches/characterization/quantiles/BaseQuantilesAccuracyProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/quantiles/BaseQuantilesAccuracyProfile.java
@@ -77,10 +77,10 @@ public abstract class BaseQuantilesAccuracyProfile implements JobProfile {
     }
   }
 
-  abstract void configure(Properties props);
+  public abstract void configure(Properties props);
 
-  abstract void prepareTrial(int streamLength);
+  public abstract void prepareTrial(int streamLength);
 
-  abstract double doTrial();
+  public abstract double doTrial();
 
 }
diff --git a/src/main/java/org/apache/datasketches/characterization/quantiles/BaseQuantilesSpeedProfile.java b/src/main/java/org/apache/datasketches/characterization/quantiles/BaseQuantilesSpeedProfile.java
index 8934154..52629ab 100644
--- a/src/main/java/org/apache/datasketches/characterization/quantiles/BaseQuantilesSpeedProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/quantiles/BaseQuantilesSpeedProfile.java
@@ -73,15 +73,15 @@ public abstract class BaseQuantilesSpeedProfile implements JobProfile {
     }
   }
 
-  abstract void configure(int k, int numQueryValues, Properties properties);
+  public abstract void configure(int k, int numQueryValues, Properties properties);
 
-  abstract void prepareTrial(int streamLength);
+  public abstract void prepareTrial(int streamLength);
 
-  abstract void doTrial();
+  public abstract void doTrial();
 
-  abstract String getHeader();
+  public abstract String getHeader();
 
-  abstract String getStats(int streamLength, int numTrials, int numQueryValues);
+  public abstract String getStats(int streamLength, int numTrials, int numQueryValues);
 
   private static int getNumTrials(final int x, final int lgMinX, final int lgMaxX,
       final int lgMinTrials, final int lgMaxTrials) {
diff --git a/src/main/java/org/apache/datasketches/characterization/quantiles/DoublesSketchAccuracyProfile.java b/src/main/java/org/apache/datasketches/characterization/quantiles/DoublesSketchAccuracyProfile.java
index 733a4d4..e56ecbb 100644
--- a/src/main/java/org/apache/datasketches/characterization/quantiles/DoublesSketchAccuracyProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/quantiles/DoublesSketchAccuracyProfile.java
@@ -35,7 +35,7 @@ public class DoublesSketchAccuracyProfile extends BaseQuantilesAccuracyProfile {
   private boolean useBulk;
 
   @Override
-  void configure(final Properties props) {
+  public void configure(final Properties props) {
     final int lgK = Integer.parseInt(props.mustGet("lgK"));
     builder = DoublesSketch.builder().setK(1 << lgK);
     useCompact = Boolean.parseBoolean(props.mustGet("useCompact"));
@@ -43,7 +43,7 @@ public class DoublesSketchAccuracyProfile extends BaseQuantilesAccuracyProfile {
   }
 
   @Override
-  void prepareTrial(final int streamLength) {
+  public void prepareTrial(final int streamLength) {
     // prepare input data that will be permuted
     inputValues = new double[streamLength];
     for (int i = 0; i < streamLength; i++) {
@@ -59,7 +59,7 @@ public class DoublesSketchAccuracyProfile extends BaseQuantilesAccuracyProfile {
   }
 
   @Override
-  double doTrial() {
+  public double doTrial() {
     shuffle(inputValues);
 
     // build sketch
diff --git a/src/main/java/org/apache/datasketches/characterization/quantiles/DoublesSketchSpeedProfile.java b/src/main/java/org/apache/datasketches/characterization/quantiles/DoublesSketchSpeedProfile.java
index 709ead8..d45c0fa 100644
--- a/src/main/java/org/apache/datasketches/characterization/quantiles/DoublesSketchSpeedProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/quantiles/DoublesSketchSpeedProfile.java
@@ -59,7 +59,7 @@ public class DoublesSketchSpeedProfile extends BaseQuantilesSpeedProfile {
   long numRetainedItems;
 
   @Override
-  void configure(final int k, final int numQueryValues, final Properties properties) {
+  public void configure(final int k, final int numQueryValues, final Properties properties) {
     this.k = k;
     this.numQueryValues = numQueryValues;
     useDirect = Boolean.parseBoolean(properties.mustGet("useDirect"));
@@ -67,7 +67,7 @@ public class DoublesSketchSpeedProfile extends BaseQuantilesSpeedProfile {
   }
 
   @Override
-  void prepareTrial(final int streamLength) {
+  public void prepareTrial(final int streamLength) {
     // prepare input data
     inputValues = new double[streamLength];
     for (int i = 0; i < streamLength; i++) {
@@ -90,7 +90,7 @@ public class DoublesSketchSpeedProfile extends BaseQuantilesSpeedProfile {
 
   @SuppressWarnings("unused")
   @Override
-  void doTrial() {
+  public void doTrial() {
     DoublesSketchAccuracyProfile.shuffle(inputValues);
 
     final long startBuild = System.nanoTime();
@@ -166,7 +166,7 @@ public class DoublesSketchSpeedProfile extends BaseQuantilesSpeedProfile {
 
       final long startGetRank = System.nanoTime();
       for (final double value: queryValues) {
-        //compactSketch.getRank(value); //TODO this was not released yet
+        //compactSketch.getRank(value);
         final double estRank = compactSketch.getCDF(new double[] {value})[0];
       }
       final long stopGetRank = System.nanoTime();
@@ -195,13 +195,13 @@ public class DoublesSketchSpeedProfile extends BaseQuantilesSpeedProfile {
   }
 
   @Override
-  String getHeader() {
+  public String getHeader() {
     return "Stream\tTrials\tBuild\tUpdate\tQuant\tCDF\tRank\tSer\tDeser\tstatsSize"
         + "\tCompact\tQuant\tCDF\tRank\tSer\tDeser\tstatsSize\tItems";
   }
 
   @Override
-  String getStats(final int streamLength, final int numTrials, final int numQueryValues) {
+  public String getStats(final int streamLength, final int numTrials, final int numQueryValues) {
     return String.format("%d\t%d\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%d"
       + "\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%d\t%d",
       streamLength,
diff --git a/src/main/java/org/apache/datasketches/characterization/quantiles/DruidAppHistStreamAProfile.java b/src/main/java/org/apache/datasketches/characterization/quantiles/DruidAppHistStreamAProfile.java
index 4d51684..ed846f3 100644
--- a/src/main/java/org/apache/datasketches/characterization/quantiles/DruidAppHistStreamAProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/quantiles/DruidAppHistStreamAProfile.java
@@ -19,7 +19,7 @@
 
 package org.apache.datasketches.characterization.quantiles;
 
-import static org.apache.datasketches.characterization.quantiles.ProfileUtil.buildSplitPointsArr;
+import static org.apache.datasketches.characterization.ProfileUtil.buildSplitPointsArr;
 
 import java.io.File;
 
diff --git a/src/main/java/org/apache/datasketches/characterization/quantiles/ExactStreamAProfile.java b/src/main/java/org/apache/datasketches/characterization/quantiles/ExactStreamAProfile.java
index d8bc862..56dec32 100644
--- a/src/main/java/org/apache/datasketches/characterization/quantiles/ExactStreamAProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/quantiles/ExactStreamAProfile.java
@@ -19,8 +19,8 @@
 
 package org.apache.datasketches.characterization.quantiles;
 
-import static org.apache.datasketches.characterization.quantiles.ProfileUtil.buildSplitPointsArr;
-import static org.apache.datasketches.characterization.quantiles.ProfileUtil.checkMonotonic;
+import static org.apache.datasketches.characterization.ProfileUtil.buildSplitPointsArr;
+import static org.apache.datasketches.characterization.ProfileUtil.checkMonotonic;
 
 import java.io.File;
 import java.util.Arrays;
diff --git a/src/main/java/org/apache/datasketches/characterization/quantiles/ItemsSketchAccuracyProfile.java b/src/main/java/org/apache/datasketches/characterization/quantiles/ItemsSketchAccuracyProfile.java
index 1090ff1..c877929 100644
--- a/src/main/java/org/apache/datasketches/characterization/quantiles/ItemsSketchAccuracyProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/quantiles/ItemsSketchAccuracyProfile.java
@@ -33,12 +33,12 @@ public class ItemsSketchAccuracyProfile extends BaseQuantilesAccuracyProfile {
   private boolean useBulk;
 
   @Override
-  void configure(final Properties props) {
+  public void configure(final Properties props) {
     lgK = Integer.parseInt(props.mustGet("lgK"));
   }
 
   @Override
-  void prepareTrial(final int streamLength) {
+  public void prepareTrial(final int streamLength) {
     // prepare input data that will be permuted
     inputValues = new int[streamLength];
     for (int i = 0; i < streamLength; i++) {
@@ -54,7 +54,7 @@ public class ItemsSketchAccuracyProfile extends BaseQuantilesAccuracyProfile {
   }
 
   @Override
-  double doTrial() {
+  public double doTrial() {
     shuffle(inputValues);
 
     // build sketch
diff --git a/src/main/java/org/apache/datasketches/characterization/quantiles/ItemsSketchSpeedProfile.java b/src/main/java/org/apache/datasketches/characterization/quantiles/ItemsSketchSpeedProfile.java
index fd367f2..7df44c2 100644
--- a/src/main/java/org/apache/datasketches/characterization/quantiles/ItemsSketchSpeedProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/quantiles/ItemsSketchSpeedProfile.java
@@ -50,13 +50,13 @@ public class ItemsSketchSpeedProfile extends BaseQuantilesSpeedProfile {
   long serializedSizeBytes;
 
   @Override
-  void configure(final int k, final int numQueryValues, final Properties properties) {
+  public void configure(final int k, final int numQueryValues, final Properties properties) {
     this.k = k;
     this.numQueryValues = numQueryValues;
   }
 
   @Override
-  void prepareTrial(final int streamLength) {
+  public void prepareTrial(final int streamLength) {
     // prepare input data
     inputValues = new double[streamLength];
     for (int i = 0; i < streamLength; i++) {
@@ -73,7 +73,7 @@ public class ItemsSketchSpeedProfile extends BaseQuantilesSpeedProfile {
 
   @SuppressWarnings("unused")
   @Override
-  void doTrial() {
+  public void doTrial() {
     DoublesSketchAccuracyProfile.shuffle(inputValues);
 
     final long startBuild = System.nanoTime();
@@ -124,12 +124,12 @@ public class ItemsSketchSpeedProfile extends BaseQuantilesSpeedProfile {
   }
 
   @Override
-  String getHeader() {
+  public String getHeader() {
     return "Stream\tTrials\tBuild\tUpdate\tQuant\tCDF\tRank\tSer\tDeser\tItems\tstatsSize";
   }
 
   @Override
-  String getStats(final int streamLength, final int numTrials, final int numQueryValues) {
+  public String getStats(final int streamLength, final int numTrials, final int numQueryValues) {
     return String.format("%d\t%d\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%d\t%d",
       streamLength,
       numTrials,
diff --git a/src/main/java/org/apache/datasketches/characterization/quantiles/MSketchStreamAProfile.java b/src/main/java/org/apache/datasketches/characterization/quantiles/MSketchStreamAProfile.java
index 7b7acc6..d3a33f2 100644
--- a/src/main/java/org/apache/datasketches/characterization/quantiles/MSketchStreamAProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/quantiles/MSketchStreamAProfile.java
@@ -142,7 +142,6 @@ public class MSketchStreamAProfile implements JobProfile {
     //println(String.format("Pmf/Point_nSec:\t%10.3f", (double)pmfTime_nS / lenPMF));
   }
 
-
   /**
    * Compute the ranks array.
    * @param numRanks the number of evenly-spaced rank values including 0 and 1.0.
diff --git a/src/main/java/org/apache/datasketches/characterization/quantiles/QuantilesStreamAProfile.java b/src/main/java/org/apache/datasketches/characterization/quantiles/QuantilesStreamAProfile.java
index b428651..bc14073 100644
--- a/src/main/java/org/apache/datasketches/characterization/quantiles/QuantilesStreamAProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/quantiles/QuantilesStreamAProfile.java
@@ -20,7 +20,7 @@
 package org.apache.datasketches.characterization.quantiles;
 
 import static java.lang.Math.rint;
-import static org.apache.datasketches.characterization.quantiles.ProfileUtil.buildSplitPointsArr;
+import static org.apache.datasketches.characterization.ProfileUtil.buildSplitPointsArr;
 
 import java.io.File;
 
diff --git a/src/main/java/org/apache/datasketches/characterization/quantiles/tdigest/TDigestSpeedProfile.java b/src/main/java/org/apache/datasketches/characterization/quantiles/tdigest/TDigestSpeedProfile.java
index cd84b8d..821fcd8 100644
--- a/src/main/java/org/apache/datasketches/characterization/quantiles/tdigest/TDigestSpeedProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/quantiles/tdigest/TDigestSpeedProfile.java
@@ -61,7 +61,6 @@ public class TDigestSpeedProfile extends QuantilesSpeedProfile {
     resetStats();
   }
 
-
   @Override
   void doTrial() {
     gen.fillArray(inputValues);
@@ -160,15 +159,9 @@ public class TDigestSpeedProfile extends QuantilesSpeedProfile {
   }
 
   @Override
-  public void shutdown() {
-    // TODO Auto-generated method stub
-
-  }
+  public void shutdown() { }
 
   @Override
-  public void cleanup() {
-    // TODO Auto-generated method stub
-
-  }
+  public void cleanup() { }
 
 }
diff --git a/src/test/java/org/apache/datasketches/characterization/quantiles/FlipFlopStream.java b/src/main/java/org/apache/datasketches/characterization/req/FlipFlopStream.java
similarity index 86%
rename from src/test/java/org/apache/datasketches/characterization/quantiles/FlipFlopStream.java
rename to src/main/java/org/apache/datasketches/characterization/req/FlipFlopStream.java
index d526a52..48de600 100644
--- a/src/test/java/org/apache/datasketches/characterization/quantiles/FlipFlopStream.java
+++ b/src/main/java/org/apache/datasketches/characterization/req/FlipFlopStream.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.datasketches.characterization.quantiles;
+package org.apache.datasketches.characterization.req;
 
 import org.testng.annotations.Test;
 
@@ -35,7 +35,7 @@ public class FlipFlopStream {
   private int hi;
 
   /**
-   * Constuctor used by TestNG
+   * Constructor used by TestNG
    */
   public FlipFlopStream() {}
 
@@ -44,7 +44,7 @@ public class FlipFlopStream {
    * @param N the length of the sequence and size of the returned array.
    * @param offset The lowest value in the sequence. Usually either 0 or 1.
    */
-  public FlipFlopStream(int N, int offset) {
+  public FlipFlopStream(final int N, final int offset) {
     arr = new float[N];
     idx = 0;
     v = offset;
@@ -60,7 +60,7 @@ public class FlipFlopStream {
    * @param hiReps repetitions for the high range
    * @param steps maximum number of steps for this sequence
    */
-  public void flipFlop(int loReps, int hiReps, int steps) {
+  public void flipFlop(final int loReps, final int hiReps, int steps) {
     int n = hi - lo + 1;
     while (n > 0 && steps > 0) {
       int i = loReps;
@@ -89,8 +89,8 @@ public class FlipFlopStream {
 
   @Test
   public void checkFlipFlop() {
-    int N = 50;
-    FlipFlopStream ffs = new FlipFlopStream(N, 1);
+    final int N = 50;
+    final FlipFlopStream ffs = new FlipFlopStream(N, 1);
     ffs.flipFlop(1, 1, 20);
     ffs.flipFlop(10, 1, 10);
     ffs.flipFlop(1, 10, 10);
@@ -98,5 +98,5 @@ public class FlipFlopStream {
     for (int i = 0; i < N; i++) { println(ffs.arr[i]); }
   }
 
-  static void println(Object o) { System.out.println(o.toString()); }
+  static void println(final Object o) { System.out.println(o.toString()); }
 }
diff --git a/src/test/java/org/apache/datasketches/characterization/quantiles/ReqMergeSpeedProfile.java b/src/main/java/org/apache/datasketches/characterization/req/ReqMergeSpeedProfile.java
similarity index 88%
rename from src/test/java/org/apache/datasketches/characterization/quantiles/ReqMergeSpeedProfile.java
rename to src/main/java/org/apache/datasketches/characterization/req/ReqMergeSpeedProfile.java
index 1a01352..d9aa6df 100644
--- a/src/test/java/org/apache/datasketches/characterization/quantiles/ReqMergeSpeedProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/req/ReqMergeSpeedProfile.java
@@ -17,12 +17,13 @@
  * under the License.
  */
 
-package org.apache.datasketches.characterization.quantiles;
+package org.apache.datasketches.characterization.req;
 
 import java.lang.reflect.Array;
 import java.util.Random;
 
 import org.apache.datasketches.Properties;
+import org.apache.datasketches.characterization.quantiles.BaseQuantilesSpeedProfile;
 import org.apache.datasketches.req.ReqSketch;
 import org.apache.datasketches.req.ReqSketchBuilder;
 
@@ -40,7 +41,7 @@ public class ReqMergeSpeedProfile extends BaseQuantilesSpeedProfile {
   long numRetainedItems;
 
   @Override
-  void configure(final int k, final int numQueryValues, final Properties properties) {
+  public void configure(final int k, final int numQueryValues, final Properties properties) {
     this.numSketches = Integer.parseInt(properties.mustGet("numSketches"));
     final boolean HRA = Boolean.parseBoolean(properties.mustGet("HRA"));
     sketches = (ReqSketch[]) Array.newInstance(ReqSketch.class, numSketches);
@@ -48,7 +49,7 @@ public class ReqMergeSpeedProfile extends BaseQuantilesSpeedProfile {
   }
 
   @Override
-  void prepareTrial(final int streamLength) {
+  public void prepareTrial(final int streamLength) {
     // prepare input data
     inputValues = new float[streamLength];
     for (int i = 0; i < streamLength; i++) {
@@ -58,7 +59,7 @@ public class ReqMergeSpeedProfile extends BaseQuantilesSpeedProfile {
   }
 
   @Override
-  void doTrial() {
+  public void doTrial() {
     final long startBuild = System.nanoTime();
     for (int i = 0; i < numSketches; i++) {
       sketches[i] = sketchBuilder.build();
@@ -91,12 +92,12 @@ public class ReqMergeSpeedProfile extends BaseQuantilesSpeedProfile {
   }
 
   @Override
-  String getHeader() {
+  public String getHeader() {
     return "Stream\tTrials\tBuild\tUpdate\tMerge\tItems";
   }
 
   @Override
-  String getStats(final int streamLength, final int numTrials, final int numQueryValues) {
+  public String getStats(final int streamLength, final int numTrials, final int numQueryValues) {
     return String.format("%d\t%d\t%.1f\t%.1f\t%.1f\t%d",
       streamLength,
       numTrials,
diff --git a/src/test/java/org/apache/datasketches/characterization/quantiles/ReqSketchAccuracyProfile.java b/src/main/java/org/apache/datasketches/characterization/req/ReqSketchAccuracyProfile.java
similarity index 92%
rename from src/test/java/org/apache/datasketches/characterization/quantiles/ReqSketchAccuracyProfile.java
rename to src/main/java/org/apache/datasketches/characterization/req/ReqSketchAccuracyProfile.java
index 3a6f32e..df45e40 100644
--- a/src/test/java/org/apache/datasketches/characterization/quantiles/ReqSketchAccuracyProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/req/ReqSketchAccuracyProfile.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.datasketches.characterization.quantiles;
+package org.apache.datasketches.characterization.req;
 
 import static java.lang.Math.round;
 import static org.apache.datasketches.GaussianRanks.GAUSSIANS_3SD;
@@ -30,7 +30,7 @@ import org.apache.datasketches.JobProfile;
 import org.apache.datasketches.MonotonicPoints;
 import org.apache.datasketches.Properties;
 import org.apache.datasketches.characterization.Shuffle;
-import org.apache.datasketches.characterization.quantiles.StreamMaker.Pattern;
+import org.apache.datasketches.characterization.req.StreamMaker.Pattern;
 import org.apache.datasketches.hll.HllSketch;
 import org.apache.datasketches.quantiles.DoublesSketch;
 import org.apache.datasketches.quantiles.DoublesSketchBuilder;
@@ -144,7 +144,7 @@ public class ReqSketchAccuracyProfile implements JobProfile {
     lgMax = Integer.parseInt(prop.mustGet("LgMax"));
     lgDelta = Integer.parseInt(prop.mustGet("LgDelta"));
     ppo = Integer.parseInt(prop.mustGet("PPO"));
-    // Trials config (indep of sketch)
+    // Trials config (independent of sketch)
     numTrials = 1 << Integer.parseInt(prop.mustGet("LgTrials"));
     errQSkLgK = Integer.parseInt(prop.mustGet("ErrQSkLgK"));
     errHllSkLgK = Integer.parseInt(prop.mustGet("ErrHllSkLgK"));
@@ -168,10 +168,10 @@ public class ReqSketchAccuracyProfile implements JobProfile {
     MIN_K = Integer.parseInt(prop.mustGet("MIN_K"));
     LAZY_COMPRESSION = Boolean.parseBoolean(prop.mustGet("LAZY_COMPRESSION"));
     //criterion = InequalitySearch.valueOf(prop.mustGet("Criterion"));
-    String reqDebugLevel = prop.get("ReqDebugLevel");
-    String reqDebugFmt = prop.get("ReqDebugFmt");
+    final String reqDebugLevel = prop.get("ReqDebugLevel");
+    final String reqDebugFmt = prop.get("ReqDebugFmt");
     if (reqDebugLevel != null) {
-      int level = Integer.parseInt(reqDebugLevel);
+      final int level = Integer.parseInt(reqDebugLevel);
       reqDebugImpl = new ReqDebugImpl(level, reqDebugFmt);
     }
   }
@@ -254,7 +254,8 @@ public class ReqSketchAccuracyProfile implements JobProfile {
       endIdx = hra ? streamLength - 1 : subStreamLen - 1;
     }
 
-    //generates PP indices in [startIdx, endIdx] inclusive, inclusive // PV 2020-01-07: using double so that there's enough precision even for large stream lengths
+    //generates PP indices in [startIdx, endIdx] inclusive, inclusive
+    // PV 2020-01-07: using double so that there's enough precision even for large stream lengths
     final double[] temp = evenlySpaced
         ? evenlySpaced(startIdx, endIdx, numPlotPoints)
         : expSpaced(startIdx, endIdx, numPlotPoints, exponent, hra);
@@ -301,23 +302,23 @@ public class ReqSketchAccuracyProfile implements JobProfile {
           rlb, rub, uErrCnt);
 
       if (relPP > 0 && relPP < 1
-    	      && (hra && relPP < metricsRankRange || !hra && relPP >= 1 - metricsRankRange)) {
-    	  sumAddStdDev += errQ[4];
-    	  numAddStdDev++;
+          && (hra && relPP < metricsRankRange || !hra && relPP >= 1 - metricsRankRange)) {
+        sumAddStdDev += errQ[4];
+        numAddStdDev++;
       }
       if (relPP > 0 && relPP < 1
-    		  && (!hra && relPP < metricsRankRange || hra && relPP >= 1 - metricsRankRange)) {
+          && (!hra && relPP < metricsRankRange || hra && relPP >= 1 - metricsRankRange)) {
         sumRelStdDev += errQ[4] / (hra ? 1 - relPP : relPP);
-    	  numRelStdDev++;
+        numRelStdDev++;
       }
       errQSkArr[pp].reset(); //reset the errQSkArr for next streamLength
       errHllSkArr[pp].reset(); //reset the errHllSkArr for next streamLength
     }
-    int serBytes = sk.getSerializationBytes();
+    final int serBytes = sk.getSerializationBytes();
 
     // special metrics for capturing accuracy per byte
-    double avgRelStdDevTimesSize = serBytes * sumRelStdDev / numRelStdDev;
-    double avgAddStdDevTimesSize = serBytes * sumAddStdDev / numAddStdDev;
+    final double avgRelStdDevTimesSize = serBytes * sumRelStdDev / numRelStdDev;
+    final  double avgAddStdDevTimesSize = serBytes * sumAddStdDev / numAddStdDev;
     job.println(LS + "Avg. relative std. dev. times size: " + avgRelStdDevTimesSize);
     job.println(     "Avg. additive std. dev. times size: " + avgAddStdDevTimesSize);
 
diff --git a/src/test/java/org/apache/datasketches/characterization/quantiles/ReqSketchAccuracyProfile2.java b/src/main/java/org/apache/datasketches/characterization/req/ReqSketchAccuracyProfile2.java
similarity index 93%
rename from src/test/java/org/apache/datasketches/characterization/quantiles/ReqSketchAccuracyProfile2.java
rename to src/main/java/org/apache/datasketches/characterization/req/ReqSketchAccuracyProfile2.java
index 516fe47..d7ffc64 100644
--- a/src/test/java/org/apache/datasketches/characterization/quantiles/ReqSketchAccuracyProfile2.java
+++ b/src/main/java/org/apache/datasketches/characterization/req/ReqSketchAccuracyProfile2.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.datasketches.characterization.quantiles;
+package org.apache.datasketches.characterization.req;
 
 import static org.apache.datasketches.GaussianRanks.GAUSSIANS_3SD;
 import static org.apache.datasketches.Util.evenlySpacedFloats;
@@ -25,7 +25,7 @@ import static org.apache.datasketches.Util.evenlySpacedFloats;
 import org.apache.datasketches.Job;
 import org.apache.datasketches.JobProfile;
 import org.apache.datasketches.Properties;
-import org.apache.datasketches.characterization.quantiles.StreamMaker.Pattern;
+import org.apache.datasketches.characterization.req.StreamMaker.Pattern;
 import org.apache.datasketches.quantiles.DoublesSketch;
 import org.apache.datasketches.quantiles.DoublesSketchBuilder;
 import org.apache.datasketches.quantiles.UpdateDoublesSketch;
@@ -91,7 +91,7 @@ public class ReqSketchAccuracyProfile2 implements JobProfile {
 
   //JobProfile interface
   @Override
-  public void start(Job job) {
+  public void start(final Job job) {
     this.job = job;
     prop = job.getProperties();
     extractProperties();
@@ -131,10 +131,10 @@ public class ReqSketchAccuracyProfile2 implements JobProfile {
     K = Integer.parseInt(prop.mustGet("K"));
     hra = Boolean.parseBoolean(prop.mustGet("HRA"));
     ltEq = Boolean.parseBoolean(prop.mustGet("LtEq"));
-    String reqDebugLevel = prop.get("ReqDebugLevel");
-    String reqDebugFmt = prop.get("ReqDebugFmt");
+    final String reqDebugLevel = prop.get("ReqDebugLevel");
+    final String reqDebugFmt = prop.get("ReqDebugFmt");
     if (reqDebugLevel != null) {
-      int level = Integer.parseInt(reqDebugLevel);
+      final int level = Integer.parseInt(reqDebugLevel);
       reqDebugImpl = new ReqDebugImpl(level, reqDebugFmt);
     }
   }
@@ -150,7 +150,7 @@ public class ReqSketchAccuracyProfile2 implements JobProfile {
   private void configureStream() {
     N = 1 << lgSL;
     streamMaker = new StreamMaker();
-    float[] stream = streamMaker.makeStream(N, pattern, offset);
+    final float[] stream = streamMaker.makeStream(N, pattern, offset);
     if (ltEq) {
       trueRanks = new TrueFloatRanks(stream, true);
     } else {
@@ -164,7 +164,7 @@ public class ReqSketchAccuracyProfile2 implements JobProfile {
     sortedPPValues = new float[numPlotPoints];
     final int[] sortedAbsRanks = trueRanks.getSortedAbsRanks();
     final float[] sortedStream = trueRanks.getSortedStream();
-    int minIdx = (int)Math.round((double)(N - 1) / numPlotPoints);
+    final int minIdx = (int)Math.round((double)(N - 1) / numPlotPoints);
     final float[] temp = evenlySpacedFloats(minIdx, N - 1, numPlotPoints); //indices
 
     for (int pp = 0; pp < numPlotPoints; pp++) {
@@ -186,7 +186,7 @@ public class ReqSketchAccuracyProfile2 implements JobProfile {
     }
   }
 
-  private void doStreamLength(int streamLength) {
+  private void doStreamLength(final int streamLength) {
     job.println(LS + "Stream Length: " + streamLength );
     job.printfData(sFmt, (Object[])columnLabels);
 
@@ -226,7 +226,7 @@ public class ReqSketchAccuracyProfile2 implements JobProfile {
     UpdateDoublesSketch qSk = errQSkArr[pp];
     for (int idx = 0; idx < N; idx++) {
       final double skRank = sk.getRank(sortedStream[idx]);
-      double trueRank = (double)sortedAbsRanks[idx] / N;
+      final double trueRank = (double)sortedAbsRanks[idx] / N;
       if (idx <= ppAbsIdx) {
         final double rErr = skRank - trueRank;
         qSk.update(rErr);
diff --git a/src/test/java/org/apache/datasketches/characterization/quantiles/ReqSketchLongSizeSpeedProfile.java b/src/main/java/org/apache/datasketches/characterization/req/ReqSketchLongSizeSpeedProfile.java
similarity index 98%
rename from src/test/java/org/apache/datasketches/characterization/quantiles/ReqSketchLongSizeSpeedProfile.java
rename to src/main/java/org/apache/datasketches/characterization/req/ReqSketchLongSizeSpeedProfile.java
index c85e606..7e9fad0 100644
--- a/src/test/java/org/apache/datasketches/characterization/quantiles/ReqSketchLongSizeSpeedProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/req/ReqSketchLongSizeSpeedProfile.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.datasketches.characterization.quantiles;
+package org.apache.datasketches.characterization.req;
 
 import static java.lang.Math.log;
 import static java.lang.Math.pow;
diff --git a/src/test/java/org/apache/datasketches/characterization/quantiles/ReqSketchSizeSpeedProfile.java b/src/main/java/org/apache/datasketches/characterization/req/ReqSketchSizeSpeedProfile.java
similarity index 97%
rename from src/test/java/org/apache/datasketches/characterization/quantiles/ReqSketchSizeSpeedProfile.java
rename to src/main/java/org/apache/datasketches/characterization/req/ReqSketchSizeSpeedProfile.java
index c50602e..ac3d1c4 100644
--- a/src/test/java/org/apache/datasketches/characterization/quantiles/ReqSketchSizeSpeedProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/req/ReqSketchSizeSpeedProfile.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.datasketches.characterization.quantiles;
+package org.apache.datasketches.characterization.req;
 
 import static java.lang.Math.log;
 import static java.lang.Math.pow;
@@ -93,7 +93,8 @@ public class ReqSketchSizeSpeedProfile implements JobProfile {
     final ReqSketchBuilder bldr = ReqSketch.builder();
     bldr.setK(reqK).setHighRankAccuracy(hra);
     reqSk = bldr.build();
-    //reqSk = new ReqSketch(reqK, hra, null, (byte)INIT_NUMBER_OF_SECTIONS, MIN_K, NOM_CAPACITY_MULTIPLIER, LAZY_COMPRESSION);
+    //reqSk = new ReqSketch(reqK, hra, null, (byte)INIT_NUMBER_OF_SECTIONS,
+    //  MIN_K, NOM_CAPACITY_MULTIPLIER, LAZY_COMPRESSION);
     reqSk.setLessThanOrEqual(ltEq);
 
   }
diff --git a/src/test/java/org/apache/datasketches/characterization/quantiles/StreamMaker.java b/src/main/java/org/apache/datasketches/characterization/req/StreamMaker.java
similarity index 76%
rename from src/test/java/org/apache/datasketches/characterization/quantiles/StreamMaker.java
rename to src/main/java/org/apache/datasketches/characterization/req/StreamMaker.java
index 94e7866..01c4990 100644
--- a/src/test/java/org/apache/datasketches/characterization/quantiles/StreamMaker.java
+++ b/src/main/java/org/apache/datasketches/characterization/req/StreamMaker.java
@@ -17,15 +17,15 @@
  * under the License.
  */
 
-package org.apache.datasketches.characterization.quantiles;
+package org.apache.datasketches.characterization.req;
 
-import static org.apache.datasketches.characterization.quantiles.StreamMaker.Pattern.FLIP_FLOP;
-import static org.apache.datasketches.characterization.quantiles.StreamMaker.Pattern.RANDOM;
-import static org.apache.datasketches.characterization.quantiles.StreamMaker.Pattern.REVERSED;
-import static org.apache.datasketches.characterization.quantiles.StreamMaker.Pattern.SORTED;
-import static org.apache.datasketches.characterization.quantiles.StreamMaker.Pattern.SQRT;
-import static org.apache.datasketches.characterization.quantiles.StreamMaker.Pattern.ZOOM_IN;
-import static org.apache.datasketches.characterization.quantiles.StreamMaker.Pattern.ZOOM_OUT;
+import static org.apache.datasketches.characterization.req.StreamMaker.Pattern.FLIP_FLOP;
+import static org.apache.datasketches.characterization.req.StreamMaker.Pattern.RANDOM;
+import static org.apache.datasketches.characterization.req.StreamMaker.Pattern.REVERSED;
+import static org.apache.datasketches.characterization.req.StreamMaker.Pattern.SORTED;
+import static org.apache.datasketches.characterization.req.StreamMaker.Pattern.SQRT;
+import static org.apache.datasketches.characterization.req.StreamMaker.Pattern.ZOOM_IN;
+import static org.apache.datasketches.characterization.req.StreamMaker.Pattern.ZOOM_OUT;
 
 import org.apache.datasketches.characterization.Shuffle;
 import org.testng.annotations.Test;
@@ -36,16 +36,18 @@ import org.testng.annotations.Test;
 public class StreamMaker {
   static final String LS = System.getProperty("line.separator");
   static String TAB = "\t";
+
   public enum Pattern { SORTED, REVERSED, ZOOM_IN, ZOOM_OUT, RANDOM, SQRT, FLIP_FLOP,
     CLUSTERED, CLUSTERED_ZOOM_IN, ZOOM_IN_SQRT }
+
   public float min = 0;
   public float max = 0;
 
-  public float[] makeStream(int n, Pattern pattern, int offset) {
+  public float[] makeStream(final int n, final Pattern pattern, final int offset) {
     float[] arr = new float[n];
     min = offset;
     max = n - 1 + offset;
-    switch(pattern) {
+    switch (pattern) {
       case SORTED: {
         for (int i = 0; i < n; i++) { arr[i] = i + offset; }
         break;
@@ -75,7 +77,7 @@ public class StreamMaker {
       }
       case SQRT: {
         int idx = 0;
-        int t = (int)Math.sqrt(2 * n);
+        final int t = (int)Math.sqrt(2 * n);
         int item = 0;
         int initialItem = 0;
         int initialSkip = 1;
@@ -95,7 +97,7 @@ public class StreamMaker {
         break;
       }
       case ZOOM_IN_SQRT: {
-        int t = (int)Math.floor(Math.sqrt(n));
+        final int t = (int)Math.floor(Math.sqrt(n));
         int i = 0;
         for (int j = 0; j < t - 1; j++) {
           arr[i] = j + offset; i++;
@@ -107,9 +109,9 @@ public class StreamMaker {
         break;
       }
       case FLIP_FLOP: {
-        FlipFlopStream ffs = new FlipFlopStream(n, offset);
+        final FlipFlopStream ffs = new FlipFlopStream(n, offset);
         ffs.flipFlop(1, 1, n * 2 / 5);
-        int m = n / 5;
+        final int m = n / 5;
         ffs.flipFlop(m, 1, m);
         ffs.flipFlop(1, m, m);
         ffs.flipFlop(1, 1, n);
@@ -126,8 +128,8 @@ public class StreamMaker {
     return arr;
   }
 
-  public void printStream(int n, Pattern order, int offset) {
-    float[] stream = makeStream(n, order, offset);
+  public void printStream(final int n, final Pattern order, final int offset) {
+    final float[] stream = makeStream(n, order, offset);
     println(order + " n:" + n + " offset: " + offset);
     for (int i = 0; i < stream.length; i++) {
       //if (i != 0 && i % 21 == 0) { println(""); }
@@ -152,7 +154,7 @@ public class StreamMaker {
     printStream(100, FLIP_FLOP, 1);
   }
 
-  static void print(Object o) { System.out.print(o.toString()); }
+  static void print(final Object o) { System.out.print(o.toString()); }
 
-  static void println(Object o) { System.out.println(o.toString()); }
+  static void println(final Object o) { System.out.println(o.toString()); }
 }
diff --git a/src/test/java/org/apache/datasketches/characterization/quantiles/TrueFloatRanks.java b/src/main/java/org/apache/datasketches/characterization/req/TrueFloatRanks.java
similarity index 92%
rename from src/test/java/org/apache/datasketches/characterization/quantiles/TrueFloatRanks.java
rename to src/main/java/org/apache/datasketches/characterization/req/TrueFloatRanks.java
index e0ebe1d..7c862f3 100644
--- a/src/test/java/org/apache/datasketches/characterization/quantiles/TrueFloatRanks.java
+++ b/src/main/java/org/apache/datasketches/characterization/req/TrueFloatRanks.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.datasketches.characterization.quantiles;
+package org.apache.datasketches.characterization.req;
 
 import java.util.Arrays;
 
@@ -40,7 +40,7 @@ public class TrueFloatRanks {
   private float[] stream;
   private float[] sortedStream;
   private int[] sortedAbsRanks;
-  private int[] streamAbsRanks; //TODO do we need this?
+  private int[] streamAbsRanks;
 
   TrueFloatRanks() { } //for TestNG
 
@@ -75,7 +75,7 @@ public class TrueFloatRanks {
   }
 
   public int getAbsRank(final float v) {
-    int idx = BinarySearch.find(sortedStream, 0, length - 1, v);
+    final int idx = BinarySearch.find(sortedStream, 0, length - 1, v);
     return sortedAbsRanks[idx];
   }
 
@@ -117,8 +117,8 @@ public class TrueFloatRanks {
    * @return the relative rank array.
    */
   public static double[] relativeRank(final int[] absRankArr) {
-    int length = absRankArr.length;
-    double[] relRank = new double[length];
+    final int length = absRankArr.length;
+    final double[] relRank = new double[length];
     for (int i = 0; i < length; i++) { relRank[i] = (double)absRankArr[i] / length; }
     return relRank;
   }
@@ -133,12 +133,12 @@ public class TrueFloatRanks {
   }
 
   private static void checkRanksImpl(final float[] vArr) {
-    StringBuilder sb = new StringBuilder();
-    String ffmt  = "%5.1f ";
-    String dfmt    = "%5d ";
+    final StringBuilder sb = new StringBuilder();
+    final String ffmt  = "%5.1f ";
+    final String dfmt    = "%5d ";
     TrueFloatRanks trueRanks;
 
-    int N = vArr.length;
+    final int N = vArr.length;
     sb.append("Values:").append(LS);
     for (int i = 0; i < N; i++) { sb.append(String.format(ffmt, vArr[i])); }
     sb.append(LS);
@@ -165,7 +165,7 @@ public class TrueFloatRanks {
     println(sb.toString());
   }
 
-  private static void println(Object o) {
+  private static void println(final Object o) {
     System.out.println(o.toString());
   }
 
diff --git a/src/main/java/org/apache/datasketches/characterization/theta/ThetaUpdateSpeedProfile.java b/src/main/java/org/apache/datasketches/characterization/theta/ThetaUpdateSpeedProfile.java
index 461f251..1d726b6 100644
--- a/src/main/java/org/apache/datasketches/characterization/theta/ThetaUpdateSpeedProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/theta/ThetaUpdateSpeedProfile.java
@@ -36,7 +36,6 @@ public class ThetaUpdateSpeedProfile extends BaseUpdateSpeedProfile {
   private WritableDirectHandle handle;
   private WritableMemory wmem;
 
-
   @Override
   public void configure() {
     //Configure Sketch
diff --git a/src/main/java/org/apache/datasketches/characterization/theta/concurrent/ConcurrentThetaAccuracyProfile.java b/src/main/java/org/apache/datasketches/characterization/theta/concurrent/ConcurrentThetaAccuracyProfile.java
index 2c800e2..5f99317 100644
--- a/src/main/java/org/apache/datasketches/characterization/theta/concurrent/ConcurrentThetaAccuracyProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/theta/concurrent/ConcurrentThetaAccuracyProfile.java
@@ -45,7 +45,6 @@ public class ConcurrentThetaAccuracyProfile extends BaseAccuracyProfile {
   private WritableDirectHandle wdh;
   private WritableMemory wmem;
 
-
   @Override
   public void configure() {
     //Configure Sketches
diff --git a/src/main/java/org/apache/datasketches/characterization/theta/concurrent/ConcurrentThetaMultithreadedSpeedProfile.java b/src/main/java/org/apache/datasketches/characterization/theta/concurrent/ConcurrentThetaMultithreadedSpeedProfile.java
index 3c64a3b..7a40362 100644
--- a/src/main/java/org/apache/datasketches/characterization/theta/concurrent/ConcurrentThetaMultithreadedSpeedProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/theta/concurrent/ConcurrentThetaMultithreadedSpeedProfile.java
@@ -56,7 +56,6 @@ public class ConcurrentThetaMultithreadedSpeedProfile extends BaseUpdateSpeedPro
   private boolean isThreadSafe;
   private ConcurrentTestContext ctx;
 
-
   /**
    * Configure the sketch
    */
@@ -227,7 +226,6 @@ public class ConcurrentThetaMultithreadedSpeedProfile extends BaseUpdateSpeedPro
    */
   protected class ReaderThread extends ConcurrentTestThread {
 
-
     public ReaderThread() {
       super(ctx);
     }
diff --git a/src/main/java/org/apache/datasketches/characterization/tuple/AodSketchUpdateSpeedProfile.java b/src/main/java/org/apache/datasketches/characterization/tuple/AodSketchUpdateSpeedProfile.java
index 323092c..a4a06ae 100644
--- a/src/main/java/org/apache/datasketches/characterization/tuple/AodSketchUpdateSpeedProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/tuple/AodSketchUpdateSpeedProfile.java
@@ -32,7 +32,6 @@ public class AodSketchUpdateSpeedProfile extends BaseUpdateSpeedProfile {
   private WritableDirectHandle handle;
   private WritableMemory wmem;
 
-
   @Override
   public void configure() {
     //Configure Sketch
diff --git a/src/main/java/org/apache/datasketches/characterization/uniquecount/BaseMergeSpeedProfile2.java b/src/main/java/org/apache/datasketches/characterization/uniquecount/BaseMergeSpeedProfile2.java
index 148f450..04b111a 100644
--- a/src/main/java/org/apache/datasketches/characterization/uniquecount/BaseMergeSpeedProfile2.java
+++ b/src/main/java/org/apache/datasketches/characterization/uniquecount/BaseMergeSpeedProfile2.java
@@ -143,5 +143,4 @@ public abstract class BaseMergeSpeedProfile2 implements JobProfile {
     public double totalTime_nS;
   }
 
-
 }
diff --git a/src/main/resources/quantiles/KllFloatsSketchRankGaussianAccuracyJob.conf b/src/main/resources/quantiles/KllFloatsSketchRankGaussianAccuracyJob.conf
index 1f52248..088f7cf 100644
--- a/src/main/resources/quantiles/KllFloatsSketchRankGaussianAccuracyJob.conf
+++ b/src/main/resources/quantiles/KllFloatsSketchRankGaussianAccuracyJob.conf
@@ -31,7 +31,7 @@ ErrSkLgK=12   # parameter for the rank error distribution sketch
 NumPlotPoints=100 # number of plot points along the x-axis
 
 # Specific sketch config
-K=100 # sketch size and accuracy parameter
+K=200 # sketch size and accuracy parameter
 
 
 # Date-Time Profile
diff --git a/src/main/resources/quantiles/KllSketchAccuracyJob.conf b/src/main/resources/quantiles/KllSketchAccuracyJob.conf
index 0d7b563..8a6a22d 100644
--- a/src/main/resources/quantiles/KllSketchAccuracyJob.conf
+++ b/src/main/resources/quantiles/KllSketchAccuracyJob.conf
@@ -20,9 +20,9 @@ K=200 # sketch size and accuracy parameter
 useBulk=true # query ranks using getCDF() instead of separate getRank() for each value
 errLgK=10 # parameter for the rank error distribution sketch
 errPct=99 # percentile of the rank error distribution to report
-trials=10 # Trials at every stream length
+trials=1000 # Trials at every stream length
 lgMin=0  # The starting stream length
 lgMax=23 # How high the stream length goes
 PPO=8    # The horizontal x-resolution of trials points
-type=double
-direct=true
+type=float
+direct=false
diff --git a/src/main/resources/quantiles/KllSketchSizeSpeedJob.conf b/src/main/resources/quantiles/KllSketchSizeSpeedJob.conf
index 99090dd..2e9d11c 100644
--- a/src/main/resources/quantiles/KllSketchSizeSpeedJob.conf
+++ b/src/main/resources/quantiles/KllSketchSizeSpeedJob.conf
@@ -29,7 +29,9 @@ LgMinBpSL=10   # The SL breakpoint where the slope starts
 LgMaxBpSL=20   # The SL breakpoint where the slope stops
 
 # Specific sketch config
-KllK=200 # KllSketch size and accuracy 
+KllK=200 # KllSketch size and accuracy
+type=double
+direct=false
 
 # Date-Time Profile
 TimeZone=PDT
diff --git a/tools/SketchesCheckstyle.xml b/tools/SketchesCheckstyle.xml
index 3fef296..87d03e6 100644
--- a/tools/SketchesCheckstyle.xml
+++ b/tools/SketchesCheckstyle.xml
@@ -352,6 +352,7 @@ under the License.
     <!-- Whitespace -->
     <module name="EmptyLineSeparator">
       <property name="allowNoEmptyLineBetweenFields" value="true"/>
+      <property name="allowMultipleEmptyLines" value="false"/>
     </module>
     
     <module name="GenericWhitespace">


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datasketches.apache.org
For additional commands, e-mail: commits-help@datasketches.apache.org