Boost logo

Boost :

From: Robert Ramey (ramey_at_[hidden])
Date: 2007-02-15 16:30:20


brass goowy wrote:
> Robert Ramey writes:

>
> 1.33.1 // I pass an ofstream to binary_oarchive
> takes ~5200 microseconds
>
> 1.35 // I pass a filebuf to the binary_oarchive here
> takes ~3900 microseconds

Hmm I'm very surprised that there is any detectable difference between the
above two.

>
> Ebenezer Enterprises
> takes ~1200 microseconds
>

We'll look into this. I'm surprised to find such a difference. The
serialization code for standard containers of primitives is just a loop
through the container elements which writes to the streambuf. (unless I
forgot something or there is bug - always a possibility) Its not clear to me
how to make this much faster without setting aside std::streambuf and using
some other less portable method. In my view, boost bjam doesn't provide
easy access to code profiling which is what I think is needed here.

Robert Ramey

> The stripped 1.35 executable is ~22,600 bytes and the stripped EE
> version is ~8,200 bytes.

This is less of a concern to me. boost serialization uses a lot of template
code which may or may not account for this. I don't know how comparable the
feature sets are and its possible that this might explain such a difference.

> I haven't tested with vectors yet.

Your tests with std::list have already convinced me that it's worth looking
into.

Robert Ramey


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk