
Some recent tests I've done that compare Ebenezer Enterprises and Boost.serialization's performance show the Boost.serialization approach to be 7 to 9 times slower than the Ebenezer Enterprises approach. I'm using Linux 2.6.12, gcc 4.0.2 (with -O3) and a Boost.serialization library from the release tree. A test that compared the times to serialize/send a list<int> took 7.4 times longer with Boost than Ebenezer. I timed the following Boost: oArch & lst; // oArch is a binary_oarchive
Ebenezer: msgs.Send(buffer, lst); // In order to compare apples to apples, // I removed a section of code at the end
// of the Send function that flushes the buffer.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This seems wrong to me, comparing library to library as it is written and as the user see's it would be much more interesting and to me makes this test pointless. If you can really just remove the flush then it probably shouldnt be there in the first place or configurable by the user on an archive by archive basis.
In a second test I added a deque of int... Boost: oArch & lst; oArch & dq; // std::deque<int> dq;
Ebenezer: msgs.Send(buffer, lst, dq);
In this case Boost took 9.1 times longer than Ebenezer Enterprises approach. If you want to run these tests with other compilers I think that would be helpful. I've been warned not to put too much emphasis on numbers from gcc.
It would be interesting to see what the results are with a vanilla version of your library as well as a feature by feature comparision to see if you really are comparing apples to apples. Martin -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.362 / Virus Database: 267.12.8/165 - Release Date: 9/11/2005