Thanks Anton for the update.

Regards,
Vinay

On Thu, Mar 17, 2016 at 7:39 AM, Anton Bikineev <[email protected]>
wrote:

> Hi all,
>
> Let me cc this to hpx-users, because it covers some recent results on
> benchmarking our serialization library.
> Vinay and Hartmut, please forgive me for being late in response, my mind
> has been exhausted at my day-to-day job.
>
> I’ve compiled those benchmarks (
> https://github.com/stellar-group/cpp-serializers) using trunk-gcc
> (gcc-6.0), boost-1.60 and hpx with HEAD on 17 Feb.
> I also removed avro library, because new gcc rejected to compile it, and
> updated thrift. Result I got are quite interesting — running benchmark for
> 1 million iterations gave me the following results:
>
> [09:02:07]:[email protected]:/home/abikineev/cpp-serializers/build:0:$
> ./test 1000000
> performing 1000000 iterations
>
> thrift-binary: version = 0.9.3
> thrift-binary: size = 17017 bytes
> thrift-binary: time = 28548 milliseconds
>
> thrift-compact: version = 0.9.3
> thrift-compact: size = 11597 bytes
> thrift-compact: time = 33778 milliseconds
>
> protobuf: version = 2006000
> protobuf: size = 12571 bytes
> protobuf: time = 24545 milliseconds
>
> boost: version = 106000
> boost: size = 17470 bytes
> boost: time = 16060 milliseconds
>
> msgpack: version = 0.5.9
> msgpack: size = 11902 bytes
> msgpack: time = 30098 milliseconds
>
> cereal: size = 17416 bytes
> cereal: time = 13382 milliseconds
>
> hpx: size = 17433 bytes
> hpx: time = 12140 milliseconds
>
> hpx zero copy: size = 9433 bytes
> hpx zero copy: time = 8122 milliseconds
>
>
> Then I noticed, that version of cereal lib was quite old (namely 1.0.0)
> and I updated it to the latest 1.1.2. And I got results as follows:
>
> [09:20:26]:[email protected]:/home/abikineev/cpp-serializers/build:0:$
> ./test 1000000
> performing 1000000 iterations
>
> thrift-binary: version = 0.9.3
> thrift-binary: size = 17017 bytes
> thrift-binary: time = 28025 milliseconds
>
> thrift-compact: version = 0.9.3
> thrift-compact: size = 11597 bytes
> thrift-compact: time = 33802 milliseconds
>
> protobuf: version = 2006000
> protobuf: size = 12571 bytes
> protobuf: time = 23843 milliseconds
>
> boost: version = 106000
> boost: size = 17470 bytes
> boost: time = 16188 milliseconds
>
> msgpack: version = 0.5.9
> msgpack: size = 11902 bytes
> msgpack: time = 30051 milliseconds
>
> cereal: size = 17416 bytes
> cereal: time = 13083 milliseconds
>
> hpx: size = 17433 bytes
> hpx: time = 12371 milliseconds
>
> hpx zero copy: size = 9433 bytes
> hpx zero copy: time = 8138 milliseconds
>
> Summarizing, to be honest I didn’t expect that we slightly outperform
> cereal, because it is quite concentrated on serialization itself and
> doesn’t perform some runtime checks as we do such as filter and zero-copy
> buffer presence, endianess, etc…
>
> If you want to play with parameters, I can send you the binary and my
> envs, or my local changes for cpp-serializers and cmake command.
>
> Sincerely,
> Anton.
>
> > On Mar 1, 2016, at 11:51 PM, Hartmut Kaiser <[email protected]>
> wrote:
> >
> > Vinay,
> >
> >> Thank you so much Hartmut for the pointers. I'll go through the links.
> Any
> >> quick insights on why HPX is a little slower than cereal? The byte size
> >> (for objects) seems to be similar for both. But the HPX results are
> >> impressive nonetheless!
> >
> > Those numbers have been collected a while ago and I believe we have
> improved on those already. I don't remember what the actual reason was,
> however. I'm cc'ing Anton, he is the main author of our serialization
> library, he might have some more insights.
> >
> > Regards Hartmut
> > ---------------
> > http://boost-spirit.com
> > http://stellar.cct.lsu.edu
> >
> >
> >>
> >> Regards,
> >> Vinay
> >>
> >> On Tue, Mar 1, 2016 at 12:17 PM, Hartmut Kaiser <
> [email protected]>
> >> wrote:
> >> Hey Vinay,
> >>
> >>> I have a quick question with your experience with regards to
> >> serialization
> >>> library. I'm involved in another project(for graph processing - still
> >>> initial stage, at least for me) that is currently trying to decide what
> >>> serialization library works best for distributed runtime system. The
> >>> criteria is it has to be C++11 enabled. They don't want to use Boost.
> >> The
> >>> alternative we see is Cereal Serialization Library. What I wanted to
> ask
> >>> was did you have an experience with this library? Also, what test
> >>> parameters should I look into that'd give me an idea about its
> >> usefulness
> >>> in general (besides the time overhead)?
> >>
> >> We gave up on Boost serialization as well (most out of performance
> >> reasons) and implemented our own. The main criteria I'd look for is
> >> genericity, extensibility and performance. One (possibly minor) thing
> I'd
> >> look out for is whether a library supports zero-copy operations (i.e.
> >> avoids copying data, if possible).
> >>
> >>> Also, is there any other comparable library you could point to?
> >>
> >> There is a small project comparing the performance of various libraries
> >> here: https://github.com/thekvs/cpp-serializers. We have added our own
> >> serialization library to the mix in our fork of this project here:
> >> https://github.com/STEllAR-GROUP/cpp-serializers.
> >>
> >>> Btw, I hope the last tropical storm was not too disruptive there.
> >>
> >> Yah, all went by gracefully and all we got was some rain.
> >>
> >> HTH
> >> Regards Hartmut
> >> ---------------
> >> http://boost-spirit.com
> >> http://stellar.cct.lsu.edu
> >>
> >>
> >
> >
>
>
_______________________________________________
hpx-users mailing list
[email protected]
https://mail.cct.lsu.edu/mailman/listinfo/hpx-users

Reply via email to