nosqlbench-828 nosqlbench-824

This commit is contained in:
Jonathan Shook 2022-12-07 14:32:35 -06:00
parent 7737ffc0f9
commit 15f15ebc90

View File

@ -41,22 +41,22 @@ import java.util.function.LongUnaryOperator;
public class TriangularStepFunction implements LongUnaryOperator { public class TriangularStepFunction implements LongUnaryOperator {
private final Hash hasher = new Hash(); private final Hash hasher = new Hash();
private final long median; private final long average;
private final LongUnaryOperator sizer; private final LongUnaryOperator sizer;
private final long variance; private final long variance;
@Example({"TriangularStepFunction(100,20)","Create a sequence of values where the average and median is 100, but the range of values is between 80 and 120."}) @Example({"TriangularStepFunction(100,20)","Create a sequence of values where the average is 100, but the range of values is between 80 and 120."})
@Example({"TriangularStepFunction(80,10)","Create a sequence of values where the average and median is 80, but the range of values is between 70 and 90."}) @Example({"TriangularStepFunction(80,10)","Create a sequence of values where the average is 80, but the range of values is between 70 and 90."})
TriangularStepFunction(long average, long variance) { TriangularStepFunction(long average, long variance) {
if (variance < 0 || variance > average) { if (average<=0 || variance < 0 || variance > average) {
throw new RuntimeException( throw new RuntimeException(
"The median must be non-negative, and the variance must be less than the median. " + "The average must be non-negative, and the variance must be less than the average. " +
"You provided median=" + average + ", variance=" + variance + "." "You provided average=" + average + ", variance=" + variance + "."
); );
} }
this.median = average; this.average = average;
this.variance = variance; this.variance = variance;
this.sizer = new HashRange(average-variance,average+variance); this.sizer = new HashRange(average-variance,average+variance);
} }
@ -68,9 +68,9 @@ public class TriangularStepFunction implements LongUnaryOperator {
@Override @Override
public long applyAsLong(long operand) { public long applyAsLong(long operand) {
// window number // window number
long count = operand / median; long count = operand / average;
// offset within window // offset within window
long offset = operand % median; long offset = operand % average;
// base of window // base of window
long base = operand - offset; long base = operand - offset;
// variate up to window size // variate up to window size
@ -84,6 +84,6 @@ public class TriangularStepFunction implements LongUnaryOperator {
@Override @Override
public String toString() { public String toString() {
return this.getClass().getSimpleName()+"{median="+median+",variance="+variance+"}"; return this.getClass().getSimpleName()+"{average="+ average +",variance="+variance+"}";
} }
} }