|
Boost : |
From: Robin (al_at_[hidden])
Date: 2007-12-30 22:08:11
> My understanding is that the pool allocator is made for repeated
> allocation and deallocation of same-sized blocks, in which case the
> result makes sense. I think it's more intended for use with
> node-based containers such as list and map.
I tried with list, the std::allocator is still faster
typedef list <A, boost::pool_allocator <list <A>::value_type > > ListA;
ListA listA;
then
listA.push_back (A ());
listA.pop_front ();
Or with boost::shared_ptr as I need to keep a polymorphic pointer.
typedef list < boost::shared_ptr <A>, boost::pool_allocator <A> > ListA;
ListA listA;
then
listA.push_back (boost::shared_ptr <A> (new A ()));
listA.pop_front ();
I can't get map to compile,
typedef map <string, A, boost::pool_allocator <std::map <string,A>::value_type >
> MapA;
MapA mapA;
mapA.insert (make_pair ("test",A ()));
VC8 balks at this line at the xutility comparision predicate header. It compiles
fine with the std allocator.
Am I using pool incorrectly?
Robin
> On 30/12/2007, Robin <al_at_[hidden]> wrote:
>> I've been testing out boost pool allocator, and my results shows
>> it's slower
>> than the STL allocator. I'm using VSNet 2005 SP1. See test code
>> below.
>>
>
> My understanding is that the pool allocator is made for repeated
> allocation and deallocation of same-sized blocks, in which case the
> result makes sense. I think it's more intended for use with
> node-based containers such as list and map.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk