On Wed, 2013-02-27 at 07:49 +0100, Vincent Hanquez wrote:
> On Mon, Feb 25, 2013 at 01:30:40PM +0100, Nicolas Trangez wrote:
...
> I've been looking at the same thing lately, and i've been quite surprised, to
> say the least, by the usual go-to packages (cereal, binary). Performance wise
> this is hard to summarize, but if you serialize something small and have a 
> easy
> to compute size (e.g. fixed size structure), i would advise against using any
> kind of builder structure (builder,cereal,binary), and go directly at the
> Storable level, if performance need to be on-par other languages.
> 
> My initial interpretation is that the builder initial cost is quite high, and
> only get amortized if the number of operations is quite high (and have less
> bytestrings). So if you have many structures encoded in one encoding operation
> it's probably ok-ish.
> 
> I've made the following benchmark when i was doing my experiments,
> that shows basic serialization of bytestring-y data structures:
> 
> * "bclass" is a simple function that use bytestring concat or append
> * "bclass+io" is a simple function that use mutable bytestring + poke to 
> create the bytestring
> * "cereal" is cereal's encode function
> * "binary" is binary's encode function
> * "builder" is bytestring's builder.
> 
> * simple bytestring of constant size: <sz>
> * n bytestrings of same size: n*<sz>
> * n bytestrings of different size: <sz>+<sz2>+..
> * n bytestrings plus a w32 prefixed size: len+n*<sz>
> 
> Obviously, caveat emptor:
> 
> http://tab.snarc.org/others/benchmark-bytestring-serialization.html
> 
> Let me know if anyone want the source file.

These are some really interesting (and very consistent) results, thanks!
I guess I should do some benchmarking myself and maybe change some thing
around (heck, now I'm using Builder to serialize constants :-P).

It might be worth to share these benchmarks with the 'binary' and
'bytestring'/'blaze-builder' maintainers?

Nicolas


_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to