|
Boost : |
From: Caleb Epstein (caleb.epstein_at_[hidden])
Date: 2005-11-14 22:46:16
On Tue, 15 Nov 2005 02:08:52 00100 (CET), bwood <brass_at_[hidden]> wrote:
> I'm not sure if I understand your first question. I assume
> you read the previous posts. I compared the time it takes to
> serialize/send a list of ints using Boost and Ebenezer approaches.
> I timed the following
> Boost:
> oArch & lst; // using boost 1.33.0
> Ebenezer:
> msgs.Send(buffer, lst);
>
>
> Without making any modifications to the two "vanilla" approaches,
> Boost takes more than twice as long than Ebenezer. On the
Someone has proposed an enhancement for Serialization that would speed up
array/vector operations by an order of magnitude. I don't think such a
simple test is indicative of the overall performance or feature-set of
either of these two libraries. Perhaps Boost.Serialization does not perform
well with a list of ints, but Ebenezer does. Maybe
Boost.Serializationperforms better with scalar values, or with tracked
objects, or with the XML
based archive, who knows.
> It may be that gcc doesn't optimize the Boost code
> very well and another compiler would produce results that
> are better.
Who knows, but what you are benchmarking is far to small to be meaningful
IMHO.
The documentation is not very good. We hope to work on that.
> The "Send Sample" compiled last time I checked it. The code in
> the file MsgManager.h is generated by the site. It is not
> difficult to obtain that from the site.
Perhaps you'd be so kind as to provide a link. I can't find it. Better yet
make a .zip or .tar.gz file with all necessary code and such documentation
as exists so people can compile and test it on their own systems without
having to hunt down individual files.
> As far as build times, I agree that they aren't the most
> important factor. In my opinion they aren't trivial either.
Features are much more important to me and I am sure many others. I have a
hard time believing that "Ebenezer" can compete with Boost.Serializationwhich:
- Has an extensive unit-test suite and compiles on a broad range of
platforms/compilers
- Supports several different archive formats (e.g. text, binary, xml)
- Supports object versioning
- Supoprts pointer serialization/tracking
- Is not coupled to a transport (the Ebenezer example code I can see
seems very socket or file-centric)
Perhaps you pay a penalty for some of these features in terms of
performance, but some or all are important to many users and shouldn't be
dismissed lightly.
-- Caleb Epstein caleb dot epstein at gmail dot com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk