Boost logo

Boost Users :

Subject: Re: [Boost-users] [Assign] reservation and insert efficiency
From: John Dlugosz (JDlugosz_at_[hidden])
Date: 2010-07-06 16:23:07


> > know to get the total length first, or will it keep re-allocating
> storage with each underlying insertion? That is, do I get a
> performance benifit from manually doing:
> >
> > std::vector<record_type> newvec;
> > newvec.reserve (... add up the sizes of my three ranges ...)
> > newvec +=
> range(RecVec.begin(),db).range(newdata).range(de,RecVec.end());
> >
> > Hmm, I'm sure the last line would be somewhat different.
> > Anyway, do I need to reserve first, or will it be reasonably smart
> about that?
>
> list_of() is not particularly fast: it uses a deque to store the
> elements that are being inserted. If you are into speed, look at
> ref_list_of/cref_list_of (which is very fast), or wait till the new
> version arrives with new utilities.
>

I see. So, with cref_list_of I would need to give a maximum number to the template, which is compile time! There really isn't a reasonable limit on the size of the resulting list.

Is new stuff helpful to me, that I should look at becoming an early adopter? Or should I forget about it? Three separate range push_back's would not be too bad. std::vector doesn't have range-based push-back, but I'm supposing that this is supplied with the range library?

But I still need to count up the total size to reserve ahead of time, for best efficiency. What I need is a push_back that takes a list of ranges that are easy to specify, or be overloaded to some reasonable number of range arguments. Anything like that hanging around already?

--John




TradeStation Group, Inc. is a publicly-traded holding company (NASDAQ GS: TRAD) of three operating subsidiaries, TradeStation Securities, Inc. (Member NYSE, FINRA, SIPC and NFA), TradeStation Technologies, Inc., a trading software and subscription company, and TradeStation Europe Limited, a United Kingdom, FSA-authorized introducing brokerage firm. None of these companies provides trading or investment advice, recommendations or endorsements of any kind. The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. Any review, retransmission, dissemination or other use of, or taking of any action in reliance upon, this information by persons or entities other than the intended recipient is prohibited. If you received this in error, please contact the sender and delete the material from any computer.


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