Boost logo

Boost :

From: Martin Slater (mslater_at_[hidden])
Date: 2005-11-15 04:46:39


>>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

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