Boost logo

Boost Users :

Subject: Re: [Boost-users] Sockets and structures?
From: OvermindDL1 (overminddl1_at_[hidden])
Date: 2009-09-25 21:31:03


On Fri, Sep 25, 2009 at 6:49 PM, Daniel F. Savarese <dfs_at_[hidden]> wrote:
>
> In message <3f49a9f40909251225p28d497b6i6d73c2dd53e3ba3e_at_[hidden]>, Overm
> indDL1 writes:
>>Boost.Serialization is good if you are going to serialize up vast
>>hierarchies with lots of pointers that can be self referencing and
>>such, but it tends to be very costly in execution speed.  Something
>>like Boost.Spirit2.1 can serialize things up to a binary format as
>>well, and *very* fast.  Although something like Google's open source
>>message system could serialize up messages even better (we need a
>>Boost implementation of that system... hmm...).
>
> To the OP, I would advise you not take statements such as the above as
> gospel without performing measurements yourself.  My experience[1] is
> directly contrary to the above.  I find boost::serialization execution
> time to be negligible (for binary archives) and entirely suitable for high
> performance networking applications even if that was not the creator's
> original objective (a credit to Robert Ramey's skill).
>
> No tool is suitable for all purposes.  So figure out your requirements
> and do some testing to see what works best before choosing a solution.
> Just because boost::serialization works great for me in a particular
> application doesn't mean it's going to work great for someone else with
> a different set of requirements.  Also, talking about performance
> cost/overhead is pointless without precise quantification.  Run your
> own tests in the context of your anticipated usage and see how it
> works out.
>
> daniel
>
> [1] www.igfip.com: All interprocess communication and object serialization
>    uses boost::serialization.  Play a game of Reversi or Chess (against the
>    computer or another player) or chat with another player and see if
>    boost::serialization in any way impacts the real-time/instantaneous
>    response to your actions.  Behind the scenes, boost::serialization's
>    impact on CPU time isn't even measurable.

It is quite slow when you need speed though. You will not notice it
in those times, but compared to other methods it tends to be many many
orders of magnitude slower. It is the registery that slows it down
though (I have profiled it, AMD Code Analyst).

It is, however, *wonderful* for like save/load functionality, I still
use it for that, but for heavy network utilization on never idle
programs (say a real-time 3d action game), I never would.

Use the proper tools for the proper purposes. :)


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net