本文整理汇总了Java中org.roaringbitmap.RoaringBitmap.runOptimize方法的典型用法代码示例。如果您正苦于以下问题:Java RoaringBitmap.runOptimize方法的具体用法?Java RoaringBitmap.runOptimize怎么用?Java RoaringBitmap.runOptimize使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.roaringbitmap.RoaringBitmap
的用法示例。
在下文中一共展示了RoaringBitmap.runOptimize方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: testCanSerialiseAndDeserialiseWithRuns
import org.roaringbitmap.RoaringBitmap; //导入方法依赖的package包/类
@Test
public void testCanSerialiseAndDeserialiseWithRuns() throws IOException {
final ByteArrayBuilder byteArrayBuilder = new ByteArrayBuilder();
JsonGenerator jsonGenerator = JSON_FACTORY.createGenerator(byteArrayBuilder);
RoaringBitmap testBitmap = new RoaringBitmap();
testBitmap.add(2);
testBitmap.add(3000);
testBitmap.add(300000);
for (int i=400000; i<500000; i+=2) {
testBitmap.add(i);
}
testBitmap.runOptimize();
SERIALISER.serialize(testBitmap, jsonGenerator, null);
jsonGenerator.flush();
byte[] serialisedBitmap = byteArrayBuilder.toByteArray();
JsonParser parser = JSON_FACTORY.createParser(serialisedBitmap);
parser.setCodec(new ObjectMapper());
Object o = DESERIALISER.deserialize(parser, null);
assertEquals(RoaringBitmap.class, o.getClass());
assertEquals(testBitmap, o);
}
示例2: newRoaringBitmap
import org.roaringbitmap.RoaringBitmap; //导入方法依赖的package包/类
private static Bitmap newRoaringBitmap(int[] data, boolean optimize) {
RoaringBitmap roaring = RoaringBitmap.bitmapOf(data);
if (optimize) {
roaring.runOptimize();
}
return new RoaringBitmapWrapper(roaring);
}
示例3: setup
import org.roaringbitmap.RoaringBitmap; //导入方法依赖的package包/类
@Setup
public void setup() throws Exception {
ZipRealDataRetriever dataRetriever = new ZipRealDataRetriever(dataset);
System.out.println();
System.out.println("Loading files from " + dataRetriever.getName());
int normalsize = 0;
int runsize = 0;
int concisesize = 0;
int wahsize = 0;
int ewahsize = 0;
int ewahsize32 = 0;
long stupidarraysize = 0;
long stupidbitmapsize = 0;
int totalcount = 0;
int numberofbitmaps = 0;
int universesize = 0;
for (int[] data : dataRetriever.fetchBitPositions()) {
numberofbitmaps++;
if(universesize < data[data.length - 1 ])
universesize = data[data.length - 1 ];
stupidarraysize += 8 + data.length * 4L;
stupidbitmapsize += 8 + (data[data.length - 1] + 63L) / 64 * 8;
totalcount += data.length;
EWAHCompressedBitmap32 ewahBitmap32 = EWAHCompressedBitmap32.bitmapOf(data);
ewahsize32 += ewahBitmap32.serializedSizeInBytes();
ewah32.add(ewahBitmap32);
RoaringBitmap basic = RoaringBitmap.bitmapOf(data);
RoaringBitmap opti = basic.clone();
opti.runOptimize();
rc.add(opti);
ac.add(basic);
normalsize += basic.serializedSizeInBytes();
runsize += opti.serializedSizeInBytes();
}
count = rc.size();
System.out.println("# aggregating the first "+count+" bitmaps out of "+ac.size());
/***
* This is a hack. JMH does not allow us to report
* anything directly ourselves, so we do it forcefully.
*/
DecimalFormat df = new DecimalFormat("0.0");
System.out.println();
System.out.println("==============");
System.out.println("= data set "+dataset);
System.out.println("Number of bitmaps = " + numberofbitmaps
+ " total count = " + totalcount
+ " universe size = "+universesize);
System.out.println("Average bits per bitmap = "
+ df.format(totalcount * 1.0 / numberofbitmaps));
System.out.println("Run-roaring total = "
+ String.format("%1$10s", "" + runsize)
+ "B, average per bitmap = "
+ String.format("%1$10s",df.format(runsize * 1.0 / numberofbitmaps))
+ "B, average bits per entry = "
+ String.format("%1$10s",df.format(runsize * 8.0 / totalcount)));
System.out.println("EWAH 32-bit total = "
+ String.format("%1$10s", "" + ewahsize32)
+ "B, average per bitmap = "
+ String.format("%1$10s",df.format(ewahsize32 * 1.0 / numberofbitmaps))
+ "B, average bits per entry = "
+ String.format("%1$10s",df.format(ewahsize32 * 8.0 / totalcount)));
System.out.println("Naive array total = "
+ String.format("%1$10s", "" + stupidarraysize)
+ "B, average per bitmap = "
+ String.format("%1$10s",df.format(stupidarraysize * 1.0 / numberofbitmaps))
+ "B, average bits per entry = "
+ String.format("%1$10s",df.format(stupidarraysize * 8.0 / totalcount)));
System.out.println("Naive bitmap total = "
+ String.format("%1$10s", "" + stupidbitmapsize)
+ "B, average per bitmap = "
+ String.format("%1$10s",df.format(stupidbitmapsize * 1.0 / numberofbitmaps))
+ "B, average bits per entry = "
+ String.format("%1$10s",df.format(stupidbitmapsize * 8.0 / totalcount)));
System.out.println("==============");
System.out.println();
horizontalor = FastAggregation.naive_or(limit(count,rc.iterator()))
.getCardinality();
}
开发者ID:lemire,项目名称:java_vs_c_bitmap_benchmark,代码行数:82,代码来源:RunContainerRealDataBenchmarkWideOrNaive.java
示例4: encode
import org.roaringbitmap.RoaringBitmap; //导入方法依赖的package包/类
public byte[] encode(final int[] values) {
RoaringBitmap roaringBitmap = new RoaringBitmap();
/* null represents zero byte array */
if (values == null) {
return new byte[0];
}
int highestOffsetSet = 0;
for (int b : values) {
if (b <= 0) {
throw new IllegalArgumentException("offset must be a positive integer");
}
if (b > largestOffset) {
throw new IllegalArgumentException("Offset cannot be more than " + largestOffset);
}
roaringBitmap.add(b);
if (b > highestOffsetSet) {
highestOffsetSet = b;
}
}
/* Apply run length encoding */
roaringBitmap.runOptimize();
final byte[] bitmapByteArray = RoaringBitmapToBytes.toBytes(roaringBitmap);
/* write marker (largestOffset this bitmap supports) */
byte[] marker = Ints.toByteArray(largestOffset);
/*
write max int set to true in this bitmap
Adding 4 byte integer to mark the maximum offset that was set to true.
This could be a small price to pay to prevent deserialization of RoaringBitMap if asking offset is > this
*/
byte[] maxBitBytes = Ints.toByteArray(highestOffsetSet);
byte[] finalBiMap = new byte[marker.length + maxBitBytes.length + bitmapByteArray.length];
//Add marker
System.arraycopy(marker, 0, finalBiMap, 0, marker.length);
//Add maxBitByte
System.arraycopy(maxBitBytes, 0, finalBiMap, marker.length, maxBitBytes.length);
//Add roaring bitmap
System.arraycopy(bitmapByteArray, 0, finalBiMap, marker.length + maxBitBytes.length, bitmapByteArray.length);
return finalBiMap;
}
示例5: encode
import org.roaringbitmap.RoaringBitmap; //导入方法依赖的package包/类
public byte[] encode(final Map<Integer, Boolean> values) {
RoaringBitmap roaringBitmap = new RoaringBitmap();
/* null represents zero byte array */
if (values == null) {
return new byte[0];
}
int highestOffsetSet = 0;
for (Map.Entry<Integer, Boolean> e : values.entrySet()) {
if (e.getKey() <= 0) {
throw new IllegalArgumentException("offset must be a positive integer");
}
if (e.getKey() > largestOffset) {
throw new IllegalArgumentException("Offset cannot be more than " + largestOffset);
}
if (Boolean.TRUE.equals(e.getValue())) {
if (e.getKey() > highestOffsetSet) {
highestOffsetSet = e.getKey();
}
roaringBitmap.add(e.getKey());
}
}
/* Apply run length encoding */
roaringBitmap.runOptimize();
final byte[] bitmapByteArray = RoaringBitmapToBytes.toBytes(roaringBitmap);
/* write marker (largestOffset this bitmap supports) */
byte[] marker = Ints.toByteArray(largestOffset);
/*
write max int set to true in this bitmap
Adding 4 byte integer to mark the maximum offset that was set to true.
This could be a small price to pay to prevent deserialization of RoaringBitMap if asking offset is > this
*/
byte[] maxBitBytes = Ints.toByteArray(highestOffsetSet);
byte[] finalBiMap = new byte[marker.length + maxBitBytes.length + bitmapByteArray.length];
//Add marker
System.arraycopy(marker, 0, finalBiMap, 0, marker.length);
//Add maxBitByte
System.arraycopy(maxBitBytes, 0, finalBiMap, marker.length, maxBitBytes.length);
//Add roaring bitmap
System.arraycopy(bitmapByteArray, 0, finalBiMap, marker.length + maxBitBytes.length, bitmapByteArray.length);
return finalBiMap;
}
示例6: encode
import org.roaringbitmap.RoaringBitmap; //导入方法依赖的package包/类
public byte[] encode(final Boolean[] values) {
RoaringBitmap roaringBitmap = new RoaringBitmap();
/* null represents zero byte array */
if (values == null) {
return new byte[0];
}
int cntr = 1;
int highestOffsetSet = 0;
for (Boolean b : values) {
if (Boolean.TRUE.equals(b)) {
if (cntr > highestOffsetSet) {
highestOffsetSet = cntr;
}
roaringBitmap.add(cntr);
}
}
/* Apply run length encoding */
roaringBitmap.runOptimize();
final byte[] bitmapByteArray = RoaringBitmapToBytes.toBytes(roaringBitmap);
/* write marker (largestOffset this bitmap supports) */
byte[] marker = Ints.toByteArray(largestOffset);
/*
write max int set to true in this bitmap
Adding 4 byte integer to mark the maximum offset that was set to true.
This could be a small price to pay to prevent deserialization of RoaringBitMap if asking offset is > this
*/
byte[] maxBitBytes = Ints.toByteArray(highestOffsetSet);
byte[] finalBiMap = new byte[marker.length + maxBitBytes.length + bitmapByteArray.length];
//Add marker
System.arraycopy(marker, 0, finalBiMap, 0, marker.length);
//Add maxBitByte
System.arraycopy(maxBitBytes, 0, finalBiMap, marker.length, maxBitBytes.length);
//Add roaring bitmap
System.arraycopy(bitmapByteArray, 0, finalBiMap, marker.length + maxBitBytes.length, bitmapByteArray.length);
return finalBiMap;
}