public void add(double value, double weight) { if (nextIndex == values.length) { compact(); } values[nextIndex] = value; weights[nextIndex] = weight; nextIndex++; }
public Map<Double, Double> getBuckets() { compact(); Map<Double, Double> result = new LinkedHashMap<>(); for (int i = 0; i < nextIndex; i++) { result.put(values[i], weights[i]); } return result; }
histogram.compact(); uniqueValues.clear();
@Test public void testMergeDifferent() { NumericHistogram histogram1 = new NumericHistogram(10, 3); NumericHistogram histogram2 = new NumericHistogram(10, 3); for (int i = 0; i < 1000; i++) { histogram1.add(i); histogram2.add(i + 1000); } NumericHistogram expected = new NumericHistogram(10, 1000); for (Map.Entry<Double, Double> entry : histogram1.getBuckets().entrySet()) { expected.add(entry.getKey(), entry.getValue()); } for (Map.Entry<Double, Double> entry : histogram2.getBuckets().entrySet()) { expected.add(entry.getKey(), entry.getValue()); } expected.compact(); histogram1.mergeWith(histogram2); assertEquals(histogram1.getBuckets(), expected.getBuckets()); } }
public Slice serialize() { compact(); int requiredBytes = SizeOf.SIZE_OF_BYTE + // format SizeOf.SIZE_OF_INT + // max buckets SizeOf.SIZE_OF_INT + // entry count SizeOf.SIZE_OF_DOUBLE * nextIndex + // values SizeOf.SIZE_OF_DOUBLE * nextIndex; // weights return Slices.allocate(requiredBytes) .getOutput() .appendByte(FORMAT_TAG) .appendInt(maxBuckets) .appendInt(nextIndex) .appendBytes(Slices.wrappedDoubleArray(values, 0, nextIndex)) .appendBytes(Slices.wrappedDoubleArray(weights, 0, nextIndex)) .getUnderlyingSlice(); }
public void add(double value, double weight) { if (nextIndex == values.length) { compact(); } values[nextIndex] = value; weights[nextIndex] = weight; nextIndex++; }
public Map<Double, Double> getBuckets() { compact(); Map<Double, Double> result = new LinkedHashMap<>(); for (int i = 0; i < nextIndex; i++) { result.put(values[i], weights[i]); } return result; }
histogram.compact(); uniqueValues.clear();
@Test public void testMergeDifferent() throws Exception { NumericHistogram histogram1 = new NumericHistogram(10, 3); NumericHistogram histogram2 = new NumericHistogram(10, 3); for (int i = 0; i < 1000; i++) { histogram1.add(i); histogram2.add(i + 1000); } NumericHistogram expected = new NumericHistogram(10, 1000); for (Map.Entry<Double, Double> entry : histogram1.getBuckets().entrySet()) { expected.add(entry.getKey(), entry.getValue()); } for (Map.Entry<Double, Double> entry : histogram2.getBuckets().entrySet()) { expected.add(entry.getKey(), entry.getValue()); } expected.compact(); histogram1.mergeWith(histogram2); assertEquals(histogram1.getBuckets(), expected.getBuckets()); } }
public Slice serialize() { compact(); int requiredBytes = SizeOf.SIZE_OF_BYTE + // format SizeOf.SIZE_OF_INT + // max buckets SizeOf.SIZE_OF_INT + // entry count SizeOf.SIZE_OF_DOUBLE * nextIndex + // values SizeOf.SIZE_OF_DOUBLE * nextIndex; // weights return Slices.allocate(requiredBytes) .getOutput() .appendByte(FORMAT_TAG) .appendInt(maxBuckets) .appendInt(nextIndex) .appendBytes(Slices.wrappedDoubleArray(values, 0, nextIndex)) .appendBytes(Slices.wrappedDoubleArray(weights, 0, nextIndex)) .getUnderlyingSlice(); }