use of org.apache.datasketches.memory.Memory in project sketches-core by DataSketches.
the class SketchesTest method checkSetOpMethods.
@Test
public void checkSetOpMethods() {
final int k = 1024;
final Memory mem1 = getCompactSketchMemory(k, 0, k);
final Memory mem2 = getCompactSketchMemory(k, k / 2, 3 * k / 2);
final SetOperationBuilder bldr = setOperationBuilder();
final Union union = bldr.setNominalEntries(2 * k).buildUnion();
union.union(mem1);
CompactSketch cSk = union.getResult(true, null);
assertEquals((int) cSk.getEstimate(), k);
union.union(mem2);
cSk = union.getResult(true, null);
assertEquals((int) cSk.getEstimate(), 3 * k / 2);
final byte[] ubytes = union.toByteArray();
final WritableMemory uMem = WritableMemory.writableWrap(ubytes);
Union union2 = (Union) heapifySetOperation(uMem);
cSk = union2.getResult(true, null);
assertEquals((int) cSk.getEstimate(), 3 * k / 2);
union2 = (Union) heapifySetOperation(uMem, Util.DEFAULT_UPDATE_SEED);
cSk = union2.getResult(true, null);
assertEquals((int) cSk.getEstimate(), 3 * k / 2);
union2 = (Union) wrapSetOperation(uMem);
cSk = union2.getResult(true, null);
assertEquals((int) cSk.getEstimate(), 3 * k / 2);
union2 = (Union) wrapSetOperation(uMem, Util.DEFAULT_UPDATE_SEED);
cSk = union2.getResult(true, null);
assertEquals((int) cSk.getEstimate(), 3 * k / 2);
final int serVer = getSerializationVersion(uMem);
assertEquals(serVer, 3);
}
use of org.apache.datasketches.memory.Memory in project sketches-core by DataSketches.
the class DirectUnionTest method checkSerVer2Handling.
@Test
public void checkSerVer2Handling() {
// 4096
final int lgK = 12;
final int k = 1 << lgK;
final int u1 = 2 * k;
// smaller exact sketch forces early stop
final int u2 = 1024;
final int totU = u1 + u2;
final UpdateSketch usk1 = UpdateSketch.builder().setNominalEntries(k).build();
final UpdateSketch usk2 = UpdateSketch.builder().setNominalEntries(k).build();
for (int i = 0; i < u1; i++) {
// 2*k
usk1.update(i);
}
for (int i = u1; i < totU; i++) {
// 2*k + 1024 no overlap
usk2.update(i);
}
final Memory v2mem1 = convertSerVer3toSerVer2(usk1.compact(true, null), Util.DEFAULT_UPDATE_SEED);
final Memory v2mem2 = convertSerVer3toSerVer2(usk2.compact(true, null), Util.DEFAULT_UPDATE_SEED);
// union memory
final WritableMemory uMem = WritableMemory.writableWrap(new byte[getMaxUnionBytes(k)]);
final Union union = SetOperation.builder().setNominalEntries(k).buildUnion(uMem);
union.union(v2mem1);
union.union(v2mem2);
final CompactSketch cOut = union.getResult(true, null);
assertEquals(cOut.getEstimate(), totU, .05 * k);
}
use of org.apache.datasketches.memory.Memory in project sketches-core by DataSketches.
the class HeapAlphaSketchTest method checkHeapifySeedConflict.
@Test(expectedExceptions = SketchesArgumentException.class)
public void checkHeapifySeedConflict() {
int k = 512;
long seed1 = 1021;
long seed2 = DEFAULT_UPDATE_SEED;
UpdateSketch usk = UpdateSketch.builder().setFamily(fam_).setSeed(seed1).setNominalEntries(k).build();
byte[] byteArray = usk.toByteArray();
Memory srcMem = Memory.wrap(byteArray);
Sketch.heapify(srcMem, seed2);
}
use of org.apache.datasketches.memory.Memory in project sketches-core by DataSketches.
the class HeapAlphaSketchTest method checkHeapifyByteArrayEstimating.
@Test
public void checkHeapifyByteArrayEstimating() {
int k = 4096;
int u = 2 * k;
long seed = DEFAULT_UPDATE_SEED;
UpdateSketch usk = UpdateSketch.builder().setFamily(fam_).setSeed(seed).setNominalEntries(k).build();
for (int i = 0; i < u; i++) {
usk.update(i);
}
double uskEst = usk.getEstimate();
double uskLB = usk.getLowerBound(2);
double uskUB = usk.getUpperBound(2);
assertEquals(usk.isEstimationMode(), true);
byte[] byteArray = usk.toByteArray();
Memory srcMem = Memory.wrap(byteArray);
UpdateSketch usk2 = (UpdateSketch) Sketch.heapify(srcMem, seed);
assertEquals(usk2.getEstimate(), uskEst);
assertEquals(usk2.getLowerBound(2), uskLB);
assertEquals(usk2.getUpperBound(2), uskUB);
assertEquals(usk2.isEmpty(), false);
assertEquals(usk2.isEstimationMode(), true);
assertEquals(usk2.getClass().getSimpleName(), usk.getClass().getSimpleName());
}
use of org.apache.datasketches.memory.Memory in project sketches-core by DataSketches.
the class HeapAlphaSketchTest method checkHeapifyByteArrayExact.
@Test
public void checkHeapifyByteArrayExact() {
int k = 512;
int u = k;
long seed = DEFAULT_UPDATE_SEED;
UpdateSketch usk = UpdateSketch.builder().setFamily(fam_).setSeed(seed).setNominalEntries(k).build();
for (int i = 0; i < u; i++) {
usk.update(i);
}
int bytes = usk.getCurrentBytes();
byte[] byteArray = usk.toByteArray();
assertEquals(bytes, byteArray.length);
Memory srcMem = Memory.wrap(byteArray);
UpdateSketch usk2 = (UpdateSketch) Sketch.heapify(srcMem, seed);
assertEquals(usk2.getEstimate(), u, 0.0);
assertEquals(usk2.getLowerBound(2), u, 0.0);
assertEquals(usk2.getUpperBound(2), u, 0.0);
assertEquals(usk2.isEmpty(), false);
assertEquals(usk2.isEstimationMode(), false);
assertEquals(usk2.getClass().getSimpleName(), usk.getClass().getSimpleName());
usk2.toString(true, true, 8, true);
}
Aggregations