Thanks Anton, that's much appreciated! 
And let me reemphasize that I'm amazed by the performance of the serialization 
code you put into place. Very cool! 

Regards Hartmut
---------------
http://boost-spirit.com
http://stellar.cct.lsu.edu


> -----Original Message-----
> From: Anton Bikineev [mailto:[email protected]]
> Sent: Friday, March 18, 2016 9:53 AM
> To: [email protected]
> Cc: Vinay Amatya <[email protected]>; [email protected]
> Subject: Re: About Serialization Library
> 
> Graphs have been updated!
> 
> > On Mar 17, 2016, at 8:00 PM, Hartmut Kaiser <[email protected]>
> wrote:
> >
> > Thanks Anton, that's very much appreciated! Would you mind updating the
> graphs on the github site with the data you collected?
> >
> > Regards Hartmut
> > ---------------
> > http://boost-spirit.com
> > http://stellar.cct.lsu.edu
> >
> >
> >> -----Original Message-----
> >> From: Anton Bikineev [mailto:[email protected]]
> >> Sent: Thursday, March 17, 2016 9:39 AM
> >> To: [email protected]
> >> Cc: Vinay Amatya <[email protected]>; hpx-
> [email protected]
> >> Subject: Re: About Serialization Library
> >>
> >> 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