Boost logo

Boost :

Subject: Re: [boost] Proposal: Monotonic Containers
From: David Bergman (David.Bergman_at_[hidden])
Date: 2009-06-14 19:37:47


On Jun 14, 2009, at 7:35 PM, Christian Schladetsch wrote:

> For completeness:
>
> {
> std::list<int, boost::monotonic::allocator<int> >
> list(storage);
> generate_n(back_inserter(list), 100, rand);
> cout << "list: " << storage.used() << endl;
> }
>
> list: 1612
> deque: 736
> vector: 1724
> default rope: 608
> rope<100>: 464

Why do I carry these feeling that all samples we will see here have
monotonic (roped or not...) as the winner? ;-)

/Davd

>
> On Mon, Jun 15, 2009 at 11:30 AM, Christian Schladetsch <
> christian.schladetsch_at_[hidden]> wrote:
>
>>
>>
>>>>>
>>>>> The main benefit of a rope over a vector is that a rope can grow
>>>>> indefinately without ever needing to be resized.
>>>>>
>>>>>
>>>>>
>>>>
>>>> How does this differ from a deque?
>>>>
>>>>
>>>
>>> deque has fixed size blocks
>>
>>
>>
>> monotonic::inline_storage<4000> storage; // create local
>> storage on
>> the stack
>> {
>> {
>> std::deque<int, boost::monotonic::allocator<int> >
>> deque(storage);
>> generate_n(back_inserter(deque), 100, rand);
>> cout << "deque: " << storage.used() << endl;
>> }
>> storage.reset();
>>
>> {
>> std::vector<int, boost::monotonic::allocator<int> >
>> vector(storage);
>> generate_n(back_inserter(vector), 100, rand);
>> cout << "vector: " << storage.used() << endl;
>> }
>> storage.reset();
>>
>> {
>> monotonic::rope<int> rope(storage);
>> generate_n(back_inserter(rope), 100, rand);
>> cout << "default rope: " << storage.used() << endl;
>> }
>> storage.reset();
>>
>> {
>> monotonic::rope<int, 100> rope2(storage);
>> generate_n(back_inserter(rope2), 100, rand);
>> cout << "rope<100>: " << storage.used() << endl;
>> }
>> storage.reset();
>> }
>>
>>>>>
>>
>> deque: 736
>> vector: 1724
>> default rope: 608
>> rope<100>: 464
>>
>>
>> Deque is certainly a valid container to use with monotonic
>> allocators which
>> avoids resizing. The main benefit of a rope over a deque is that it
>> can span
>> the stack/heap boundary.
>>
>> Obviously, I have to do some performance testing of deque vs. `rope`.
>>
>> Christian.
>>
>>
> _______________________________________________
> Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


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