You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zipkin.apache.org by GitBox <gi...@apache.org> on 2019/05/10 08:49:12 UTC
[GitHub] [incubator-zipkin] anuraaga opened a new pull request #2579:
Benchmark bytes / bytebuffer, protobuf vs zipkin vs wire.
anuraaga opened a new pull request #2579: Benchmark bytes / bytebuffer, protobuf vs zipkin vs wire.
URL: https://github.com/apache/incubator-zipkin/pull/2579
For #2435
This is just a hacky set of code to compare performance of decoding `ByteBuffer` and `byte[]`. I used the protobuf library mainly since it has native decoders for each type so is easiest to compare. Naturally zipkin's `Buffer` could be updated to act on `ByteBuffer` directly to avoid this, though I'm not sure it'd be faster. wire does especially poorly with `ByteBuffer` it seems, since it just copies it into a `byte[]` but doesn't have netty's unsafe optimizations like `ByteBufUtil.getBytes` would have.
As expected, wire is especially fast in time here, probably because it doesn't do hex decoding - it's nowhere near an apple comparison and mainly for reference. Otherwise, `byte[]` seems to be a bit faster, which isn't unexpected given the JVM is optimized for it, but the difference is mainly in the noise throughout. This could possibly be considered enough reason to switch to `ByteBuffer` though as given similar parsing time, `ByteBuffer` version is a bit better since it generates no garbage and could potentially reduce GC.
```
Benchmark (num) Mode Cnt Score Error Units
ProtoCodecBenchmarks.bytebuffer_protobufDecoder 1 avgt 15 1.267 ± 0.014 us/op
ProtoCodecBenchmarks.bytebuffer_protobufDecoder 10 avgt 15 12.244 ± 0.165 us/op
ProtoCodecBenchmarks.bytebuffer_protobufDecoder 100 avgt 15 121.105 ± 1.388 us/op
ProtoCodecBenchmarks.bytebuffer_protobufDecoder 1000 avgt 15 1209.171 ± 18.580 us/op
ProtoCodecBenchmarks.bytebuffer_protobufDecoder 10000 avgt 15 12839.910 ± 771.469 us/op
ProtoCodecBenchmarks.bytebuffer_wireDecoder 1 avgt 15 0.214 ± 0.018 us/op
ProtoCodecBenchmarks.bytebuffer_wireDecoder 10 avgt 15 0.969 ± 0.064 us/op
ProtoCodecBenchmarks.bytebuffer_wireDecoder 100 avgt 15 8.317 ± 0.600 us/op
ProtoCodecBenchmarks.bytebuffer_wireDecoder 1000 avgt 15 90.706 ± 2.031 us/op
ProtoCodecBenchmarks.bytebuffer_wireDecoder 10000 avgt 15 1039.518 ± 65.438 us/op
ProtoCodecBenchmarks.bytebuffer_zipkinDecoder 1 avgt 15 1.389 ± 0.049 us/op
ProtoCodecBenchmarks.bytebuffer_zipkinDecoder 10 avgt 15 13.393 ± 0.802 us/op
ProtoCodecBenchmarks.bytebuffer_zipkinDecoder 100 avgt 15 111.140 ± 2.660 us/op
ProtoCodecBenchmarks.bytebuffer_zipkinDecoder 1000 avgt 15 1234.412 ± 106.794 us/op
ProtoCodecBenchmarks.bytebuffer_zipkinDecoder 10000 avgt 15 11658.781 ± 694.221 us/op
ProtoCodecBenchmarks.bytes_protobufDecoder 1 avgt 15 1.143 ± 0.031 us/op
ProtoCodecBenchmarks.bytes_protobufDecoder 10 avgt 15 11.733 ± 0.545 us/op
ProtoCodecBenchmarks.bytes_protobufDecoder 100 avgt 15 122.660 ± 7.020 us/op
ProtoCodecBenchmarks.bytes_protobufDecoder 1000 avgt 15 1287.893 ± 41.410 us/op
ProtoCodecBenchmarks.bytes_protobufDecoder 10000 avgt 15 11838.844 ± 184.314 us/op
ProtoCodecBenchmarks.bytes_wireDecoder 1 avgt 15 0.136 ± 0.005 us/op
ProtoCodecBenchmarks.bytes_wireDecoder 10 avgt 15 0.598 ± 0.024 us/op
ProtoCodecBenchmarks.bytes_wireDecoder 100 avgt 15 5.603 ± 0.113 us/op
ProtoCodecBenchmarks.bytes_wireDecoder 1000 avgt 15 67.543 ± 1.314 us/op
ProtoCodecBenchmarks.bytes_wireDecoder 10000 avgt 15 775.430 ± 72.922 us/op
ProtoCodecBenchmarks.bytes_zipkinDecoder 1 avgt 15 1.132 ± 0.061 us/op
ProtoCodecBenchmarks.bytes_zipkinDecoder 10 avgt 15 10.942 ± 0.225 us/op
ProtoCodecBenchmarks.bytes_zipkinDecoder 100 avgt 15 117.941 ± 8.454 us/op
ProtoCodecBenchmarks.bytes_zipkinDecoder 1000 avgt 15 1279.525 ± 73.367 us/op
ProtoCodecBenchmarks.bytes_zipkinDecoder 10000 avgt 15 12400.006 ± 469.528 us/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