
This I humbly disagree with, from a user point of view I would not want to patch either library to get optimal performance, If it is there and required then tests need to be done with it in. It would be simple to speed up boost.serialization by #if 0'ing out per class meta information lookups (versioning etc) but would still be extremely artificial.
Either way, with or without the embedded flush code, Boost serialization is less efficient than Ebenezer's Send in both tests.
Today I timed how long it takes to build the two testcases mentioned in the original post on Nov. 8th. I used the date command so the numbers are only in seconds.
list<int> list<int> and deque<int> ----------------------------------------------------------- Boost 42 61 ----------------------------------------------------------- Ebenezer 12 20
Well that is well within the realms of local optimisation, orders of magnitude would be worrying. I do know there are performance issues with Boost.Serialization, only a month ago I implemented a faster binary archive to address some of these problems with massive gains in some scenarios. What I disagree with is that these problems are necessarily architectural. Having spent some time examining in a reasonable amount of detail the performance of Boost.Serialization in vtune I'm pretty comfortable that there are some serious gains to be had. Robert has also recently started an effort towards profiling and tuning the library so there is effort being put into it. Without a feature by feature comparision of libabries its hard to tell what is being compared, lack of versioning for me would put your library out the window for many of my tasks and there would have to be an extremely compelling advantage to use a different system for the other areas.
What happens if you want to change the type of an existing data member between releases - say from char to short?
Then I split the load and save into seperator functions and in the load write something like template<class T> void load(T &ar, int version) { if(version > whatever) { char val; ar & val; m_short = val; } } adding new members to the class is similarly simple. Some of our file formats are in a constant state of flux as we proceed through development, the current time to rebuild all assets is over 3 hours and growing daily, without versioning this would be fatal. cheers Martin -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.362 / Virus Database: 267.13.0/168 - Release Date: 14/11/2005