You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@druid.apache.org by GitBox <gi...@apache.org> on 2019/04/03 23:27:53 UTC
[GitHub] [incubator-druid] richardstartin edited a comment on issue #7408:
upgrade to RoaringBitmap 0.8.0 and serialise directly to ByteBuffer
richardstartin edited a comment on issue #7408: upgrade to RoaringBitmap 0.8.0 and serialise directly to ByteBuffer
URL: https://github.com/apache/incubator-druid/pull/7408#issuecomment-479694073
I doubt druid bottlenecks on serialising bitmaps, but I wrote this new method in RoaringBitmap for an application that does, and it may be useful here. Here's some quick benchmark evidence, taking a look at how long `WrappedRoaringBitmap.serialize` takes before and after the change.
```java
@Benchmark
public void serialize(SerializeBenchmarkState state, Blackhole bh)
{
state.bitmap.serialize(state.buffer);
bh.consume(state.buffer);
state.buffer.flip();
}
@State(Scope.Benchmark)
public static class SerializeBenchmarkState
{
WrappedRoaringBitmap bitmap;
ByteBuffer buffer;
@Setup
public void setup(BitmapIterationBenchmark state)
{
bitmap = new WrappedRoaringBitmap();
Random random = ThreadLocalRandom.current();
for (int bit = 0; bit < state.size; bit++) {
if (random.nextDouble() < state.prob) {
bitmap.add(bit);
}
}
buffer = ByteBuffer.allocate(bitmap.getSizeInBytes());
}
}
```
```
8c104a115c4e08b2df60d940d6d85a7e79bef752 (incubator-druid:master)
Benchmark (bitmapAlgo) (prob) (size) Mode Cnt Score Error Units
BitmapIterationBenchmark.serialize roaring 0.0 1000000 avgt 10 29.110 ± 0.459 ns/op
BitmapIterationBenchmark.serialize roaring 0.001 1000000 avgt 10 10624.144 ± 139.993 ns/op
BitmapIterationBenchmark.serialize roaring 0.1 1000000 avgt 10 187265.856 ± 5515.013 ns/op
BitmapIterationBenchmark.serialize roaring 0.5 1000000 avgt 10 184694.297 ± 8353.848 ns/op
BitmapIterationBenchmark.serialize roaring 0.99 1000000 avgt 10 233570.949 ± 67602.280 ns/op
BitmapIterationBenchmark.serialize roaring 1.0 1000000 avgt 10 1083.100 ± 38.245 ns/op
32673c121edea450b84ffef767506b60a49f4a23 (richardstartin:faster-roaring-serialize)
Benchmark (bitmapAlgo) (prob) (size) Mode Cnt Score Error Units
BitmapIterationBenchmark.serialize roaring 0.0 1000000 avgt 10 10.510 ± 0.182 ns/op
BitmapIterationBenchmark.serialize roaring 0.001 1000000 avgt 10 957.783 ± 12.215 ns/op
BitmapIterationBenchmark.serialize roaring 0.1 1000000 avgt 10 54361.198 ± 655.209 ns/op
BitmapIterationBenchmark.serialize roaring 0.5 1000000 avgt 10 53632.341 ± 377.866 ns/op
BitmapIterationBenchmark.serialize roaring 0.99 1000000 avgt 10 16405.135 ± 271.594 ns/op
BitmapIterationBenchmark.serialize roaring 1.0 1000000 avgt 10 404.527 ± 3.868 ns/op
```
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org