|
Boost : |
From: Chris Newbold (Chris.Newbold_at_[hidden])
Date: 2008-06-25 14:01:12
On Sun, 22 Jun 2008 20:13:27 +0200, Ion Gaztañaga wrote:
> I refined those improvements for shared memory containers and I measured
> performance benefits when containers take advantage of more advanced
> allocators.
>
> The last few months, I've taken another step forward and I've developed
> a small Boost library based on a modified DLmalloc code. I've developed
> some allocators above the modified DLmalloc and I've measured the
> performance benefits that can be obtained with optimized allocators that
> offer some new features like buffer expansion, burst allocation, etc...
> Test were performed using Interprocess containers, but instead of shared
> memory allocators, I've compared DLmalloc based heap allocators against
> the standard std::allocator<>.
>
> I've written a long article with my explanations and conclusions:
>
> http://www.drivehq.com/web/igaztanaga/allocplus/
This is a very interesting and complete analysis.
I would be very interested in seeing if we could find a way to combine or layer what you have prototyped here with some of the pieces in the Boost.Pool library.
For example, we might be able to factor both of these into a collection of memory managers which do the heavy lifting of managing blocks, chunks, etc. such as simple segregated storage and your DLmalloc-based manager; and a set of "adaptors" providing a standard (or enhanced) allocator interface, a pool interface, etc.
Such a layered approach would result in a set of building blocks that could be used as the basis for other memory management patters which do not (currently) exist in Boost, such as arenas.
-Chris
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk