
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