
Hi Ion,
2013/4/28 Ion Gaztañaga
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,