当前位置: 首页>>代码示例>>Java>>正文


Java RoaringBitmap.runOptimize方法代码示例

本文整理汇总了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);
}
 
开发者ID:gchq,项目名称:Gaffer,代码行数:22,代码来源:RoaringBitmapJsonSerialisationTest.java

示例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);
}
 
开发者ID:lemire,项目名称:java_vs_c_bitmap_benchmark,代码行数:8,代码来源:BitmapFactory.java

示例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;
}
 
开发者ID:dropoftruth,项目名称:splicer,代码行数:53,代码来源:OffsetArrayRoaringBitmapEncoder.java

示例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;
}
 
开发者ID:dropoftruth,项目名称:splicer,代码行数:54,代码来源:MapToRoaringBitmapEncoder.java

示例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;
}
 
开发者ID:dropoftruth,项目名称:splicer,代码行数:47,代码来源:ArrayToRoaringBitmapEncoder.java


注:本文中的org.roaringbitmap.RoaringBitmap.runOptimize方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。