use of org.apache.datasketches.memory.Memory in project sketches-core by DataSketches.
the class UnionImplTest method checkFastWrap.
@Test
public void checkFastWrap() {
final int k = 16;
final long seed = DEFAULT_UPDATE_SEED;
final int unionSize = Sketches.getMaxUnionBytes(k);
final WritableMemory srcMem = WritableMemory.writableWrap(new byte[unionSize]);
final Union union = Sketches.setOperationBuilder().setNominalEntries(k).buildUnion(srcMem);
// exact
for (int i = 0; i < k; i++) {
union.update(i);
}
assertEquals(union.getResult().getEstimate(), k, 0.0);
final Union union2 = UnionImpl.fastWrap(srcMem, seed);
assertEquals(union2.getResult().getEstimate(), k, 0.0);
final Memory srcMemR = srcMem;
final Union union3 = UnionImpl.fastWrap(srcMemR, seed);
assertEquals(union3.getResult().getEstimate(), k, 0.0);
}
use of org.apache.datasketches.memory.Memory in project sketches-core by DataSketches.
the class UnionImplTest method checkVer2EmptyHandling.
@Test
public void checkVer2EmptyHandling() {
final int k = 16;
final UpdateSketch sketch = Sketches.updateSketchBuilder().setNominalEntries(k).build();
final Memory mem = convertSerVer3toSerVer2(sketch.compact(), Util.DEFAULT_UPDATE_SEED);
final Union union = Sketches.setOperationBuilder().setNominalEntries(k).buildUnion();
union.union(mem);
}
use of org.apache.datasketches.memory.Memory in project sketches-core by DataSketches.
the class DirectUnionTest method checkDirectMemoryIn.
@Test
public void checkDirectMemoryIn() {
// 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 skMem1 = Memory.wrap(usk1.compact(false, null).toByteArray());
final Memory skMem2 = Memory.wrap(usk2.compact(true, null).toByteArray());
final CompactSketch csk1 = (CompactSketch) Sketch.wrap(skMem1);
final CompactSketch csk2 = (CompactSketch) Sketch.wrap(skMem2);
// union memory
final WritableMemory uMem = WritableMemory.writableWrap(new byte[getMaxUnionBytes(k)]);
final Union union = SetOperation.builder().setNominalEntries(k).buildUnion(uMem);
union.union(csk1);
union.union(csk2);
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 DirectUnionTest method checkEmptySerVer2and3.
@Test
public void checkEmptySerVer2and3() {
// 4096
final int lgK = 12;
final int k = 1 << lgK;
final UpdateSketch usk1 = UpdateSketch.builder().setNominalEntries(k).build();
final CompactSketch usk1c = usk1.compact(true, null);
final byte[] skArr = usk1c.toByteArray();
final byte[] skArr2 = Arrays.copyOf(skArr, skArr.length * 2);
final WritableMemory v3mem1 = WritableMemory.writableWrap(skArr2);
// union memory
WritableMemory uMem = WritableMemory.writableWrap(new byte[getMaxUnionBytes(k)]);
Union union = SetOperation.builder().setNominalEntries(k).buildUnion(uMem);
union.union(v3mem1);
final Memory v2mem1 = convertSerVer3toSerVer2(usk1c, Util.DEFAULT_UPDATE_SEED);
final WritableMemory v2mem2 = WritableMemory.writableWrap(new byte[16]);
v2mem1.copyTo(0, v2mem2, 0, 8);
// union memory
uMem = WritableMemory.writableWrap(new byte[getMaxUnionBytes(k)]);
union = SetOperation.builder().setNominalEntries(k).buildUnion(uMem);
union.union(v2mem2);
}
use of org.apache.datasketches.memory.Memory in project sketches-core by DataSketches.
the class HeapQuickSelectSketchTest 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 = Sketches.heapifyUpdateSketch(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());
assertEquals(usk2.getResizeFactor(), usk.getResizeFactor());
usk2.toString(true, true, 8, true);
}
Aggregations