
Hi Ion! On Mon, Jun 23, 2008 at 2:13 AM, Ion GaztaƱaga <igaztanaga@gmail.com> wrote:
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<>.
The DLmalloc implementation you compared against was written in C which you adapted to C++, correct? I for one have been looking for a better alternative to both the standard allocator and the Boost.Pool allocator. A DLmalloc based implementation would be interesting to see if not as a Boost-provided/included implementation or one day a standard allocator alternative implementation.
I've written a long article with my explanations and conclusions:
Wow, it is long and very well written. I do have some questions off the top of my head: - have you tested how your implementation performs on multiple threads? - have you tried measuring the direct effect of random-sized, random-timed, random-ordered allocations/deallocations? - i notice that you were using vmware; admittedly the effect of running Linux in a VMWare instance as a guest already causes performance degradation, have you considered using something else that takes advantage of processor virtualization features better (like Virtualbox)? or better yet, have you tried running it on a native Linux implementation?
The library (includes the article) can be downloaded here:
http://www.drivehq.com/web/igaztanaga/allocplus.zip
The library has no docs (the article explains all the basics) and does not surely meet Boost standards. The only goal of this article, the library and this post is to share information with other Boost container authors and discuss possible improvements that maybe could be applied to Boost containers. If those improvements are considered interesting, it would be great if we could write a library with allocators and develop some "existing practice" with boost containers before writing a future proposal to improve allocators.
I plan to publish the article somewhere (supposing someone is crazy enough to publish it ;-) ) but first I wanted to share this with boosters to try to improve the article/library and know if developers are interested in allocator issues. Comments are welcome!
I'm looking forward to the answers to my questions and the further improvement of this article. Thanks very much for sharing this! -- Dean Michael C. Berris Software Engineer, Friendster, Inc.