Boost Memory Library: boost-memory-0.1.01
Exception Semantics
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
Thank Steven Watanabe and Scott McMurray.
Performance Comparison
I toke 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
Output: output.txt
See: http://winx.googlecode.com/svn/tags/boost-memory-0.1.01/
Related Topics
page_revision: 1, last_edited: 1210206831|%e %b %Y, %H:%M %Z (%O ago)





