|
Boost : |
From: Darren Cook (darren_at_[hidden])
Date: 2003-05-06 19:33:39
>>Is there interest in a "SimplePool" class that is quicker and less flexible?
>
> You might look at boost/detail/quick_allocator.hpp
Thanks. Once I rememebered to disable threads it gave the quickest results
(included below for comparison). Are there plans to move this into the pool
library?
I found one bug: if BOOST_QA_PAGE_SIZE is not defined, and the class size is
bigger than 512 bytes then items_per_page comes to zero:
enum { items_per_page = 512 / size };
Is this a job for the Boost concept check library? E.g. assert that
items_per_page is at least 2.
I think it would be nice if items_per_page were a template parameter, so I
can specify it for each class.
Darren
* 2.74..2.79s for normal new/delete,
* 2.70..2.72s for MemoryPool1 (block size of 300)
* 2.69..2.76s for MemoryPool1 (block size of 10, ie. 29 block allocs)
* 2.71..2.73s for MemoryPool2 (block size of 300)
* 2.71..2.73s for MemoryPool2 (block size of 10, ie. 29 block allocs)
* 2.75..2.77s for Boost::Pool (using malloc/free; disabling threading has
no effect)
* 2.79..2.81s for Boost::quick_allocator (threading, 1Mb blocks)
* 2.68..2.70s for Boost::quick_allocator (no threads, 1Mb blocks)
* (throwing away highest/lowest time for each, 6-10 test runs for each)
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk