From: Felix Yen Date: Wed, 4 Feb 2004 06:21:21 +0000 (+0000) Subject: allocator.cc: Add map, deque, set tests. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2226963242daaace49bdb475331baf9ba62134d1;p=gcc.git allocator.cc: Add map, deque, set tests. 2004-02-03 Felix Yen Benjamin Kosnik * testsuite/performance/20_util/allocator.cc: Add map, deque, set tests. * testsuite/performance/20_util/allocator_thread.cc: Same. Co-Authored-By: Benjamin Kosnik From-SVN: r77225 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 490b1b4b2e0..6921ac10477 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,10 @@ +2004-02-03 Felix Yen + Benjamin Kosnik + + * testsuite/performance/20_util/allocator.cc: Add map, + deque, set tests. + * testsuite/performance/20_util/allocator_thread.cc: Same. + 2004-02-03 Paolo Carlini * include/bits/basic_string.h (insert(iterator)): Remove, diff --git a/libstdc++-v3/testsuite/performance/20_util/allocator.cc b/libstdc++-v3/testsuite/performance/20_util/allocator.cc index 5f864ea0425..7a27c2fd342 100644 --- a/libstdc++-v3/testsuite/performance/20_util/allocator.cc +++ b/libstdc++-v3/testsuite/performance/20_util/allocator.cc @@ -35,6 +35,9 @@ #include #include +#include +#include +#include #include #include #include @@ -44,9 +47,6 @@ #include using namespace std; -using __gnu_cxx::__mt_alloc; -using __gnu_cxx::new_allocator; -using __gnu_cxx::malloc_allocator; typedef int test_type; @@ -61,18 +61,27 @@ int iterations = 100000; // should probably be investigated in more detail. int insert_values = 128; +template + struct value_type : public pair + { + value_type() : pair(0, 0) { } + + inline value_type operator++() { return ++this->first, *this; } + inline operator TestType() const { return this->first; } + }; + template int - do_loop() + do_loop(Container& obj) { int test_iterations = 0; try { - Container obj; + value_type test_value; while (test_iterations < iterations) { for (int j = 0; j < insert_values; ++j) - obj.push_back(test_iterations); + obj.insert(obj.end(), ++test_value); ++test_iterations; } } @@ -94,7 +103,7 @@ template resource_counter resource; clear_counters(time, resource); start_counters(time, resource); - int test_iterations = do_loop(); + int test_iterations = do_loop(obj); stop_counters(time, resource); std::ostringstream comment; @@ -109,30 +118,59 @@ template // http://gcc.gnu.org/ml/libstdc++/2003-05/msg00231.html int main(void) { + typedef __gnu_cxx::malloc_allocator m_alloc_type; + typedef __gnu_cxx::new_allocator n_alloc_type; + typedef __gnu_cxx::__mt_alloc so_alloc_type; + +#ifdef TEST_B0 + test_container(vector()); +#endif #ifdef TEST_B1 - test_container(vector()); + test_container(vector()); #endif #ifdef TEST_B2 - test_container(vector >()); + test_container(vector()); #endif + #ifdef TEST_B3 - test_container(vector >()); + test_container(list()); #endif #ifdef TEST_B4 - test_container(vector >()); + test_container(list()); #endif - #ifdef TEST_B5 - test_container(list()); + test_container(list()); #endif + #ifdef TEST_B6 - test_container(list >()); + test_container(deque()); #endif #ifdef TEST_B7 - test_container(list >()); + test_container(deque()); #endif #ifdef TEST_B8 - test_container(list >()); + test_container(deque()); +#endif + + typedef less compare_type; +#ifdef TEST_B9 + test_container(map()); +#endif +#ifdef TEST_B10 + test_container(map()); +#endif +#ifdef TEST_B11 + test_container(map()); +#endif + +#ifdef TEST_B12 + test_container(set()); +#endif +#ifdef TEST_B13 + test_container(set()); +#endif +#ifdef TEST_B14 + test_container(set()); #endif return 0; diff --git a/libstdc++-v3/testsuite/performance/20_util/allocator_thread.cc b/libstdc++-v3/testsuite/performance/20_util/allocator_thread.cc index e9e84289a40..b46ee4d2adf 100644 --- a/libstdc++-v3/testsuite/performance/20_util/allocator_thread.cc +++ b/libstdc++-v3/testsuite/performance/20_util/allocator_thread.cc @@ -35,6 +35,9 @@ #include #include +#include +#include +#include #include #include #include @@ -45,9 +48,6 @@ #include using namespace std; -using __gnu_cxx::__mt_alloc; -using __gnu_cxx::new_allocator; -using __gnu_cxx::malloc_allocator; typedef int test_type; @@ -62,6 +62,15 @@ int iterations = 25000; // should probably be investigated in more detail. int insert_values = 128; +template + struct value_type : public pair + { + value_type() : pair(0, 0) { } + + inline value_type operator++() { return ++this->first, *this; } + inline operator TestType() const { return this->first; } + }; + template void* do_loop(void* p = NULL) @@ -70,19 +79,21 @@ template try { int test_iterations = 0; + value_type test_value; while (test_iterations < iterations) { for (int j = 0; j < insert_values; ++j) - obj.insert(obj.begin(), test_iterations); + obj.insert(obj.end(), ++test_value); ++test_iterations; } // NB: Don't use clear() here, instead force deallocation. obj = Container(); test_iterations = 0; + test_value = value_type(); while (test_iterations < iterations) { for (int j = 0; j < insert_values; ++j) - obj.insert(obj.begin(), test_iterations); + obj.insert(obj.end(), ++test_value); ++test_iterations; } } @@ -130,30 +141,59 @@ template // http://gcc.gnu.org/ml/libstdc++/2003-05/msg00231.html int main(void) { + typedef __gnu_cxx::malloc_allocator m_alloc_type; + typedef __gnu_cxx::new_allocator n_alloc_type; + typedef __gnu_cxx::__mt_alloc so_alloc_type; + +#ifdef TEST_T0 + test_container(vector()); +#endif #ifdef TEST_T1 - test_container(vector()); + test_container(vector()); #endif #ifdef TEST_T2 - test_container(vector >()); + test_container(vector()); #endif + #ifdef TEST_T3 - test_container(vector >()); + test_container(list()); #endif #ifdef TEST_T4 - test_container(vector >()); + test_container(list()); #endif - #ifdef TEST_T5 - test_container(list()); + test_container(list()); #endif + #ifdef TEST_T6 - test_container(list >()); + test_container(deque()); #endif #ifdef TEST_T7 - test_container(list >()); + test_container(deque()); #endif #ifdef TEST_T8 - test_container(list >()); + test_container(deque()); +#endif + + typedef less compare_type; +#ifdef TEST_T9 + test_container(map()); +#endif +#ifdef TEST_T10 + test_container(map()); +#endif +#ifdef TEST_T11 + test_container(map()); +#endif + +#ifdef TEST_T12 + test_container(set()); +#endif +#ifdef TEST_T13 + test_container(set()); +#endif +#ifdef TEST_T14 + test_container(set()); #endif return 0;