From: Korcan Hussein (korcan_h_at_[hidden])
Date: 2006-12-01 05:24:56
I had a look into multi_array's implementation and i can see a number of
opportunities to improve the efficiency multi_array perhaps by quite a lot
with only very minor changes.
Why are we not taking advantage of the fact that that
allocation/de-allocation is separate from construction/destruction? i see in
a number of places that multi_array is redundantly default constructing
elements (like in multi_array::allocate_space) and then copying new elements
into the array for example in multi_array i see a lot of:
allocate_space(); // allocate memory then default construct
instead why not just do an in-place copy construction from the outset,
allocate_space(); // a new version which only allocates memory, no
std::uninitialized_copy(rhs.begin(), rhs.end(), this->begin());
When i create a multi_array i want to be able to "reserve" the shape of a
multi_array and then incrementally add new elements via in-place copy
construction or even better using in-place factories.
We do not even need to explicitly store the size if we take advantage of
uninitialized and initialized elements, just like how modern implementations
of std::vector do.
Another minor thing is to apply the empty member/base optimizations
(EMO/EBO) for allocator types which are empty in size.
So i would like to know the rationale for these, since i need something like
multi_array i may just make the adjustments myself.
Windows Live Messenger has arrived. Click here to download it for free!
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk