|
Boost : |
Subject: Re: [boost] [utility] new auto_buffer class --- RFC
From: Thorsten Ottosen (thorsten.ottosen_at_[hidden])
Date: 2009-03-02 13:10:03
Peter Dimov skrev:
> Thorsten Ottosen:
>> Peter Dimov skrev:
> ....
>>> for x in w
>>> if pred(x)
>>> v.push_back(x)
>>>
>>> The typical number of elements satisfying pred may be ~7.1, so making
>>> v have a stack capacity of 8 will eliminate a heap allocation and
>>> will be a big win. But you can't determine the maximum capacity in
>>> advance.
>>
>> Is it not |w|?
>
> Yes, it technically is bounded by |w|. But using |w| as the capacity of
> v defeats the purpose of the optimization, which is to avoid allocating
> storage for |w| elements (typically on the heap).
But then you can't know if using auto_buffer is an optimization.
If I use
auto_buffer<T> buffer(|w|)
I risk that the buffer must be resized several times. If it must be
resize only once, simply using vector + reserve() would be at least as good.
-Thorsten
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk