|
Boost : |
Subject: Re: [boost] [interprocess] [container] Can iterator hold raw-pointer instead of offset_ptr?
From: TONGARI (tongari95_at_[hidden])
Date: 2013-04-28 08:10:33
Hi Ion,
2013/4/28 Ion Gaztañaga <igaztanaga_at_[hidden]>
> El 28/04/2013 9:06, TONGARI escribió:
>
> Hi there,
>>
>> When putting containers in shared memory, offset_ptr is used internally,
>> and IIUC, the iterator of the container will also use offset_ptr. But it
>> seems to me that in most cases we only use iterator locally rather than
>> putting those iterators in shared memory as well, so the
>> plain-old-raw-pointer is sufficient and hopefully more efficient for
>> iterator's usage.
>>
>> What do you think?
>>
>
> Unless you use vector, the speed improvement might not be very different,
> as when iterating with such special "raw iterator", you need to traverse
> elements in shared memory that are linked using offset_ptr (a linked list,
> tree...). I guess you can get more speed with vector if a raw iterator is
> used, but you can always obtain the address of the first element and use
> raw pointers.
>
The speed gain that I expected might be quite similar for both vector &
list.
Both can save an addition for each dereference operation.
> I agree that assignment, construction, dereference etc. of iterators with
> raw pointers will be faster (e.g. you need a container of iterators
> pointing to elements stored in shared memory containers). I guess the speed
> advantage would be application-dependent.
>
If it's a possible improvement and won't break anything, I still hope it
can make its place.
>
Regards,
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk