Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r54085 - sandbox/monotonic/libs/monotonic/test
From: christian.schladetsch_at_[hidden]
Date: 2009-06-18 23:46:12


Author: cschladetsch
Date: 2009-06-18 23:46:10 EDT (Thu, 18 Jun 2009)
New Revision: 54085
URL: http://svn.boost.org/trac/boost/changeset/54085

Log:
changed tests to just pass the allocator type

Text files modified:
   sandbox/monotonic/libs/monotonic/test/compare_memory_pool.cpp | 109 ++++++++++++++++++++++-----------------
   1 files changed, 61 insertions(+), 48 deletions(-)

Modified: sandbox/monotonic/libs/monotonic/test/compare_memory_pool.cpp
==============================================================================
--- sandbox/monotonic/libs/monotonic/test/compare_memory_pool.cpp (original)
+++ sandbox/monotonic/libs/monotonic/test/compare_memory_pool.cpp 2009-06-18 23:46:10 EDT (Thu, 18 Jun 2009)
@@ -20,35 +20,42 @@
         return A.c < B.c;
 }
 
+template <class Alloc, class T>
+struct Rebind
+{
+ typedef typename Alloc::template rebind<T>::other type;
+};
+
 struct thrash_pool
 {
- template <class Pool>
- int operator()(size_t length, Pool &pool) const
+ template <class Alloc>
+ int test(size_t length) const
         {
- pool.resize(length*rand()/RAND_MAX);
- return accumulate(pool.begin(), pool.end(), 0);
+ std::vector<int, Rebind<Alloc, int>::type> vector;
+ vector.resize(length*rand()/RAND_MAX);
+ return accumulate(vector.begin(), vector.end(), 0);
         }
 };
 
 struct thrash_pool_sort
 {
- template <class Pool>
- int operator()(size_t length, Pool &pool) const
+ template <class Alloc>
+ int test(size_t length) const
         {
- pool.resize(length*rand()/RAND_MAX);
- generate_n(back_inserter(pool), length, rand);
- sort(pool.begin(), pool.end());
+ std::vector<int, Rebind<Alloc, int>::type> vector;
+ vector.resize(length*rand()/RAND_MAX);
+ generate_n(back_inserter(vector), length, rand);
+ sort(vector.begin(), vector.end());
                 return 0;
         }
 };
 
 struct thrash_pool_sort_list_int
 {
- template <class Pool>
- int operator()(size_t length, Pool &pool) const
+ template <class Alloc>
+ int test(size_t length) const
         {
- typedef typename Pool::allocator_type allocator;
- std::list<int, typename allocator::template rebind<int>::other> list;
+ std::list<int, Rebind<Alloc, int>::type> list;
                 generate_n(back_inserter(list), length, rand);
                 list.sort();
                 return 0;
@@ -57,14 +64,13 @@
 
 struct thrash_pool_iter
 {
- template <class Pool>
- int operator()(size_t length, Pool &pool) const
+ template <class Alloc>
+ int test(size_t length) const
         {
- typedef typename Pool::allocator_type allocator;
- std::vector<Unaligned, typename allocator::template rebind<Unaligned>::other> vec;
- vec.resize(length);
+ std::vector<Unaligned, Rebind<Alloc, Unaligned>::type> vector;
+ vector.resize(length);
                 int total = 0;
- BOOST_FOREACH(Unaligned const &val, vec)
+ BOOST_FOREACH(Unaligned const &val, vector)
                 {
                         total += val.c;
                 }
@@ -75,14 +81,13 @@
 
 struct thrash_pool_map_list_unaligned
 {
- template <class Pool>
- int operator()(size_t length, Pool &pool) const
+ template <class Alloc>
+ int test(size_t length) const
         {
- typedef typename Pool::allocator_type allocator;
                 std::map<int
- , std::list<Unaligned, typename allocator::template rebind<Unaligned>::other>
+ , std::list<Unaligned, Rebind<Alloc, Unaligned>::type>
                         , std::less<int>
- , typename allocator::template rebind<int>::other
+ , Rebind<Alloc, int>::type
> map;
                 size_t mod = length/10;
                 for (size_t n = 0; n < length; ++n)
@@ -94,6 +99,23 @@
         }
 };
 
+struct test_dupe_list
+{
+ template <class Alloc>
+ int test(size_t count) const
+ {
+ size_t dummy = 0;
+ std::list<int, Rebind<Alloc, int>::type> list;
+ fill_n(back_inserter(list), size, 42);
+ for (size_t n = 0; n < count; ++n)
+ {
+ List dupe = list;
+ dummy += dupe.size();
+ }
+ return dummy;
+ }
+};
+
 struct PoolResult
 {
         double pool_elapsed;
@@ -112,20 +134,16 @@
 template <class Fun>
 PoolResult compare_memory_pool(size_t count, size_t length, Fun fun)
 {
- typedef std::vector<
- int
- , boost::fast_pool_allocator<int
- , boost::default_user_allocator_new_delete
- , boost::details::pool::null_mutex> >
- fast_pool_v;
- typedef std::vector<
- int
- , boost::pool_allocator<int
- , boost::default_user_allocator_new_delete
- , boost::details::pool::null_mutex> >
- pool_v;
- typedef std::vector<int, boost::monotonic::allocator<int> > mono_v;
- typedef std::vector<int > std_v;
+ typedef boost::fast_pool_allocator<int
+ , boost::default_user_allocator_new_delete
+ , boost::details::pool::null_mutex>
+ fast_pool_alloc;
+ typedef boost::pool_allocator<int
+ , boost::default_user_allocator_new_delete
+ , boost::details::pool::null_mutex>
+ pool_alloc;
+ typedef monotonic::allocator<int> mono_alloc;
+ typedef std::allocator<int > std_alloc;
 
         PoolResult result;
 
@@ -136,8 +154,7 @@
                 for (size_t n = 0; n < count; ++n)
                 {
                         {
- fast_pool_v pool;
- fun(length, pool);
+ fun.test<fast_pool_alloc>(length);
                         }
                         boost::singleton_pool<boost::fast_pool_allocator_tag, sizeof(int)>::release_memory();
                         boost::singleton_pool<boost::fast_pool_allocator_tag, sizeof(Unaligned)>::release_memory();
@@ -153,8 +170,7 @@
                 for (size_t n = 0; n < count; ++n)
                 {
                         {
- pool_v pool;
- fun(length, pool);
+ fun.test<pool_alloc>(length);
                         }
                         boost::singleton_pool<boost::pool_allocator_tag, sizeof(int)>::release_memory();
                         boost::singleton_pool<boost::pool_allocator_tag, sizeof(Unaligned)>::release_memory();
@@ -170,8 +186,7 @@
                 for (size_t n = 0; n < count; ++n)
                 {
                         {
- mono_v pool;
- fun(length, pool);
+ fun.test<mono_alloc>(length);
                         }
                         boost::monotonic::reset_storage();
                 }
@@ -186,8 +201,7 @@
                 for (size_t n = 0; n < count; ++n)
                 {
                         {
- mono_v pool;
- fun(length, pool);
+ fun.test<mono_alloc>(length);
                         }
                         storage.reset();
                 }
@@ -201,8 +215,7 @@
                 for (size_t n = 0; n < count; ++n)
                 {
                         {
- std_v pool;
- fun(length, pool);
+ fun.test<std_alloc>(length);
                         }
                 }
                 result.std_elapsed = timer.elapsed();


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk