Boost logo

Boost :

From: shiwei xu (xushiweizh_at_[hidden])
Date: 2008-05-07 13:22:31


I take a performance comparison of

* boost::memory::auto_alloc
* boost::memory::scoped_alloc (use tls_block_pool::instance)
* boost::memory::scoped_alloc
* boost::memory::gc_alloc (auto)
* boost::memory::gc_alloc (manually)
* boost::pool (auto)
* boost::object_pool (auto)
* new/delete (gcc)
* mt_allocator (gnu c++)

Here (auto) means recycling objects when allocators' destructor is called.
and (manually) means deleting objects manually.

TestCase: performance.cpp<http://winx.googlecode.com/svn/tags/boost-memory-0.1.01/libs/memory/test/test_basic/memory/performance.cpp>
Output: output.txt<http://winx.googlecode.com/svn/tags/boost-memory-0.1.01/output/ubuntu4.1.2-gcc-2CPUs%7E2.93GHz-mem%7E1G/output.txt>
See: http://winx.googlecode.com/svn/tags/boost-memory-0.1.01/

On Wed, May 7, 2008 at 12:16 AM, shiwei xu <xushiweizh_at_[hidden]> wrote:

> Hello all,
>
> I update GC Allocator specification now. See the example named
> "testExceptionSemantics".
>
> The following is the new minimum specification for GC Allocator:
>
> typedef void (*DestructorType)(void* data);
>
> concept GCAllocator
> {
> // Allocate memory without given a cleanup function
> void* allocate(size_t cb);
>
> // Allocate unmanaged memory with a cleanup function
>
> void* unmanaged_alloc(size_t cb, DestructorType fn);
>
> // Commit unmanaged memory to be managed.
> void* manage(void* p, destructor_t fn);
>
> // Deprecated: allocate memory with a cleanup function
>
> void* allocate(size_t cb, DestructorType fn) {
> return manage(unmanaged_alloc(cb, fn), fn);
> }
>
> // Cleanup and deallocate all allocated memory by this GC Allocator
> void clear();
>
>
> // Swap two GCAllocator instances
> void swap(GCAllocator& o);
> };
>
> See http://svn.boost.org/trac/boost/ticket/1879#comment:13
>
> Thank Steven Watanabe and Scott McMurray.
>


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk