From 554fd8c5195424bdbcabf5de30fdc183aba391bd Mon Sep 17 00:00:00 2001 From: upstream source tree Date: Sun, 15 Mar 2015 20:14:05 -0400 Subject: obtained gcc-4.6.4.tar.bz2 from upstream website; verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository. --- .../ext/pb_ds/hash_random_int_erase_mem_usage.cc | 118 ++++++++++++++++ .../ext/pb_ds/hash_zlob_random_int_find_timing.cc | 119 ++++++++++++++++ .../ext/pb_ds/multimap_text_find_timing.hpp | 137 ++++++++++++++++++ .../ext/pb_ds/multimap_text_find_timing_large.cc | 41 ++++++ .../ext/pb_ds/multimap_text_find_timing_small.cc | 42 ++++++ .../ext/pb_ds/multimap_text_insert_mem_usage.hpp | 155 +++++++++++++++++++++ .../pb_ds/multimap_text_insert_mem_usage_large.cc | 41 ++++++ .../pb_ds/multimap_text_insert_mem_usage_small.cc | 41 ++++++ .../ext/pb_ds/multimap_text_insert_timing.hpp | 137 ++++++++++++++++++ .../ext/pb_ds/multimap_text_insert_timing_large.cc | 41 ++++++ .../ext/pb_ds/multimap_text_insert_timing_small.cc | 41 ++++++ .../priority_queue_random_int_push_pop_timing.cc | 118 ++++++++++++++++ .../pb_ds/priority_queue_random_int_push_timing.cc | 116 +++++++++++++++ .../ext/pb_ds/priority_queue_text_join_timing.cc | 113 +++++++++++++++ .../priority_queue_text_modify_down_timing.cc | 37 +++++ .../pb_ds/priority_queue_text_modify_timing.hpp | 127 +++++++++++++++++ .../pb_ds/priority_queue_text_modify_up_timing.cc | 37 +++++ .../ext/pb_ds/priority_queue_text_pop_mem_usage.cc | 119 ++++++++++++++++ .../pb_ds/priority_queue_text_push_pop_timing.cc | 116 +++++++++++++++ .../ext/pb_ds/priority_queue_text_push_timing.cc | 117 ++++++++++++++++ .../ext/pb_ds/random_int_find_timing.cc | 126 +++++++++++++++++ .../ext/pb_ds/random_int_subscript_find_timing.cc | 126 +++++++++++++++++ .../pb_ds/random_int_subscript_insert_timing.cc | 123 ++++++++++++++++ .../performance/ext/pb_ds/text_find_timing.cc | 145 +++++++++++++++++++ .../ext/pb_ds/tree_order_statistics_timing.cc | 105 ++++++++++++++ .../ext/pb_ds/tree_split_join_timing.cc | 107 ++++++++++++++ .../ext/pb_ds/tree_text_insert_timing.cc | 116 +++++++++++++++ .../ext/pb_ds/tree_text_lor_find_timing.cc | 115 +++++++++++++++ 28 files changed, 2776 insertions(+) create mode 100644 libstdc++-v3/testsuite/performance/ext/pb_ds/hash_random_int_erase_mem_usage.cc create mode 100644 libstdc++-v3/testsuite/performance/ext/pb_ds/hash_zlob_random_int_find_timing.cc create mode 100644 libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_find_timing.hpp create mode 100644 libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_find_timing_large.cc create mode 100644 libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_find_timing_small.cc create mode 100644 libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem_usage.hpp create mode 100644 libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem_usage_large.cc create mode 100644 libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem_usage_small.cc create mode 100644 libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_timing.hpp create mode 100644 libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_timing_large.cc create mode 100644 libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_timing_small.cc create mode 100644 libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_random_int_push_pop_timing.cc create mode 100644 libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_random_int_push_timing.cc create mode 100644 libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_join_timing.cc create mode 100644 libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_modify_down_timing.cc create mode 100644 libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_modify_timing.hpp create mode 100644 libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_modify_up_timing.cc create mode 100644 libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_pop_mem_usage.cc create mode 100644 libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_push_pop_timing.cc create mode 100644 libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_push_timing.cc create mode 100644 libstdc++-v3/testsuite/performance/ext/pb_ds/random_int_find_timing.cc create mode 100644 libstdc++-v3/testsuite/performance/ext/pb_ds/random_int_subscript_find_timing.cc create mode 100644 libstdc++-v3/testsuite/performance/ext/pb_ds/random_int_subscript_insert_timing.cc create mode 100644 libstdc++-v3/testsuite/performance/ext/pb_ds/text_find_timing.cc create mode 100644 libstdc++-v3/testsuite/performance/ext/pb_ds/tree_order_statistics_timing.cc create mode 100644 libstdc++-v3/testsuite/performance/ext/pb_ds/tree_split_join_timing.cc create mode 100644 libstdc++-v3/testsuite/performance/ext/pb_ds/tree_text_insert_timing.cc create mode 100644 libstdc++-v3/testsuite/performance/ext/pb_ds/tree_text_lor_find_timing.cc (limited to 'libstdc++-v3/testsuite/performance/ext/pb_ds') diff --git a/libstdc++-v3/testsuite/performance/ext/pb_ds/hash_random_int_erase_mem_usage.cc b/libstdc++-v3/testsuite/performance/ext/pb_ds/hash_random_int_erase_mem_usage.cc new file mode 100644 index 000000000..e1c7d9ec8 --- /dev/null +++ b/libstdc++-v3/testsuite/performance/ext/pb_ds/hash_random_int_erase_mem_usage.cc @@ -0,0 +1,118 @@ +// -*- C++ -*- + +// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the terms +// of the GNU General Public License as published by the Free Software +// Foundation; either version 3, or (at your option) any later +// version. + +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING3. If not see +// . + + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file hash_random_int_erase_mem_usage_test.cpp + * Contains test for erasing random integers. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +struct int_hash : public std::unary_function +{ + inline int + operator()(int i) const + { return i; } +}; + +void +usage(); + +int +main(int argc, char* a_p_argv[]) +{ + using namespace __gnu_pbds::test; + + size_t vn = 200; + size_t vs = 200; + size_t vm = 2100; + try + { + xml_test_performance_formatter fmt("Size", "Memory (bytes)"); + + typedef std::vector vec_t; + vec_t a_v(vm); + twister_rand_gen g; + for (size_t i = 0; i < vm; ++i) + a_v[i] = static_cast(g.get_unsigned_long()); + + vec_t::const_iterator b = a_v.begin(); + erase_test tst(b, vn, vs, vm); + typedef __gnu_test::tracker_allocator alloc_t; + { + typedef hash_common_types, alloc_t>::performance_tl tl_t; + + tl_t tl; + __gnu_cxx::typelist::apply(tst, tl); + } + + { + typedef native_hash_set, std::less, alloc_t> native_t; + + tst(native_t()); + } + } + catch (...) + { + std::cerr << "Test failed" << std::endl; + return -1; + } + return 0; +} + +void +usage() +{ + using namespace std; + cerr << "usage: hash_random_int_erase_if_test " + << endl << endl; + + cerr << "This test checks the performance of various associative containers " + "using their erase method. " << endl; + cerr << "Specifically, it does the following:" << endl; + cerr << "* Creates a vector of random integers " << endl; + cerr << "* Inserts the elements into the container" << endl; + cerr << "* Erases all the elements, except one, from the constainer" + << endl << endl; + + cerr << "vn = minimum size of the vector" << endl; + cerr << "vs = step size of the vector" << endl; + cerr << "vm = maximum size of the vector" << endl; +} diff --git a/libstdc++-v3/testsuite/performance/ext/pb_ds/hash_zlob_random_int_find_timing.cc b/libstdc++-v3/testsuite/performance/ext/pb_ds/hash_zlob_random_int_find_timing.cc new file mode 100644 index 000000000..82abb640b --- /dev/null +++ b/libstdc++-v3/testsuite/performance/ext/pb_ds/hash_zlob_random_int_find_timing.cc @@ -0,0 +1,119 @@ +// -*- C++ -*- + +// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the terms +// of the GNU General Public License as published by the Free Software +// Foundation; either version 3, or (at your option) any later +// version. + +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING3. If not see +// . + + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file hash_zlob_random_int_find_timing_test.cpp + * Contains test for finding random integers. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void +usage(); + +int +main(int argc, char* a_p_argv[]) +{ + using namespace __gnu_pbds::test; + + size_t vn = 200; + size_t vs = 200; + size_t vm = 2100; + try + { + xml_test_performance_formatter fmt("Size", "Average time (sec.)"); + + typedef std::vector > vec_t; + vec_t a_v(vm); + twister_rand_gen g; + + for (size_t i = 0; i < vm; ++i) + { + int k = static_cast(g.get_unsigned_long()); + a_v[i] = std::make_pair(k << 8, 0); + if ((a_v[i].first& 127) != 0) + throw std::logic_error("Fucked!"); + } + + vec_t::const_iterator b = a_v.begin(); + typedef find_test test_t; + test_t tst(b, b, vn, vs, vm, vn, vs, vm); + { + typedef native_hash_map native_t; + tst(native_t()); + } + + { + typedef hash_common_types::performance_tl tl_t; + tl_t tl; + __gnu_cxx::typelist::apply(tst, tl); + } + } + catch (...) + { + std::cerr << "Test failed" << std::endl; + return -1; + } + return 0; +} + +void +usage() +{ + using namespace std; + cerr << "usage: hash_zlob_random_int_find_timing_test " << + endl << endl; + + cerr << + "This test checks the performance of various associative containers " + "using their find method. " << endl; + cerr << "Specifically, it does the following:" << endl; + cerr << "* Creates a vector of zero low-order bit random integers " << endl; + cerr << "* Inserts the elements into the container" << endl; + cerr << "* Performs a sequence of find operations. At each iteration, " + "it finds, for each integer in the vector, its entry in the " + "container, using the find method"; + cerr << "* Repeats the above test a number of times" << endl; + + cerr << endl << endl; + + cerr << "vn = minimum size of the vector" << endl; + cerr << "vs = step size of the vector" << endl; + cerr << "vm = maximum size of the vector" << endl; +} diff --git a/libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_find_timing.hpp b/libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_find_timing.hpp new file mode 100644 index 000000000..3b850840b --- /dev/null +++ b/libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_find_timing.hpp @@ -0,0 +1,137 @@ +// -*- C++ -*- + +// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the terms +// of the GNU General Public License as published by the Free Software +// Foundation; either version 3, or (at your option) any later +// version. + +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING3. If not see +// . + + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file multimap_text_find_timing_test.cpp + * Contains test for inserting text words. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void +usage(); + +void +set_test_parameters(size_t& n, size_t&s, size_t& m, size_t& prm); + +int +main(int argc, char* a_p_argv[]) +{ + using namespace __gnu_pbds::test; + + std::string f_name = "thirty_years_among_the_dead_preproc.txt"; + size_t prm; + size_t ratio_n; + size_t ratio_s; + size_t ratio_m; + + + set_test_parameters(prm, ratio_n, ratio_s, ratio_m); + + try + { + xml_test_performance_formatter fmt("Size", "Average time (sec.)"); + + typedef std::vector > vec_t; + vec_t a_v_init(prm); + distinct_text_populate(f_name, a_v_init); + + vec_t a_v; + twister_rand_gen g; + for (size_t i = 0; i < ratio_m; ++i) + for (size_t j = 0; j < a_v_init.size(); ++j) + a_v.push_back(std::make_pair(a_v_init[j].first, + static_cast(g.get_unsigned_long()))); + + vec_t::const_iterator b = a_v.begin(); + { + typedef mmap_tl_t >::type mmap_tl_tl; + mmap_tl_tl tl; + + typedef multimap_find_test test_type; + test_type tst(b, prm* ratio_n, prm* ratio_s, prm* ratio_m); + __gnu_cxx::typelist::apply(tst, tl); + } + + { + typedef native_hash_multimap native_t; + typedef multimap_find_test test_type; + test_type tst(b, prm* ratio_n, prm* ratio_s, prm* ratio_m); + tst(native_t()); + } + + { + typedef native_multimap native_t; + typedef multimap_find_test test_type; + test_type tst(b, prm* ratio_n, prm* ratio_s, prm* ratio_m); + tst(native_t()); + } + } + catch (...) + { + std::cerr << "Test failed" << std::endl; + return -1; + } + return 0; +} + +void +usage() +{ + using namespace std; + cerr << "usage: multimap_text_insert_test.out " + << endl << endl; + + cerr << "This test checks the performance of various associative containers " + "using their insert method. " << endl; + cerr << "Specifically, it does the following:" << endl; + cerr << "* Creates a vector of pairs of text words" << endl; + cerr << "* Inserts the elements into the container" << endl; + cerr << "* Repeats the above test a number of times" << endl; + cerr << endl << endl; + + cerr << "prm = maximum size of distinct pair-first entries" << endl; + cerr << "ratio_n = minimum ratio of secondary keys to primary keys" << endl; + cerr << "ratio_s = step ratio of secondary keys to primary keys" << endl; + cerr << "ratio_m = maximum ratio of secondary keys to primary keys" << endl; +} diff --git a/libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_find_timing_large.cc b/libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_find_timing_large.cc new file mode 100644 index 000000000..b4b2179e9 --- /dev/null +++ b/libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_find_timing_large.cc @@ -0,0 +1,41 @@ +// -*- C++ -*- + +// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the terms +// of the GNU General Public License as published by the Free Software +// Foundation; either version 3, or (at your option) any later +// version. + +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING3. If not see +// . + + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +#include "multimap_text_find_timing.hpp" + +void +set_test_parameters(size_t& prm, size_t&n, size_t& s, size_t& m) +{ + prm = 100; + n = 3; + s = 4; + m = 20; +} diff --git a/libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_find_timing_small.cc b/libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_find_timing_small.cc new file mode 100644 index 000000000..75cfa8ed3 --- /dev/null +++ b/libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_find_timing_small.cc @@ -0,0 +1,42 @@ +// -*- C++ -*- + +// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the terms +// of the GNU General Public License as published by the Free Software +// Foundation; either version 3, or (at your option) any later +// version. + +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING3. If not see +// . + + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +#include "multimap_text_find_timing.hpp" + +void +set_test_parameters(size_t& prm, size_t&n, size_t& s, size_t& m) +{ + prm = 400; + n = 1; + s = 1; + m = 6; +} + diff --git a/libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem_usage.hpp b/libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem_usage.hpp new file mode 100644 index 000000000..881960fc8 --- /dev/null +++ b/libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem_usage.hpp @@ -0,0 +1,155 @@ +// -*- C++ -*- + +// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the terms +// of the GNU General Public License as published by the Free Software +// Foundation; either version 3, or (at your option) any later +// version. + +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING3. If not see +// . + + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file multimap_text_insert_mem_usage_test.cpp + * Contains test for inserting text words. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void +usage(); + +void +set_test_parameters(size_t& n, size_t&s, size_t& m, size_t& prm); + +int +main(int argc, char* a_p_argv[]) +{ + using namespace __gnu_pbds::test; + + std::string f_name = "thirty_years_among_the_dead_preproc.txt"; + size_t prm; + size_t ratio_n; + size_t ratio_s; + size_t ratio_m; + + set_test_parameters(prm, ratio_n, ratio_s, ratio_m); + + try + { + xml_test_performance_formatter fmt("Size", "Memory (bytes)"); + + typedef std::vector > init_vec_t; + init_vec_t a_v_init(prm); + distinct_text_populate(f_name, a_v_init); + + typedef __gnu_test::tracker_allocator alloc_t; + typedef std::basic_string, alloc_t> string_t; + typedef std::vector > vec_t; + vec_t a_v; + twister_rand_gen g; + for (size_t i = 0; i < ratio_m; ++i) + for (size_t j = 0; j < a_v_init.size(); ++j) + a_v.push_back(std::make_pair(string_t(a_v_init[j].first.begin(), a_v_init[j].first.end()), static_cast(g.get_unsigned_long()))); + + vec_t::const_iterator b = a_v.begin(); + { + typedef mmap_tl_t::type tl_t; + tl_t tl; + typedef multimap_insert_test test_type; + test_type tst(b, prm* ratio_n, prm* ratio_s, prm* ratio_m); + __gnu_cxx::typelist::apply(tst, tl); + } + + { + typedef mmap_tl_t< string_t, int, alloc_t>::type tl_t; + tl_t tl; + typedef multimap_insert_test test_type; + test_type tst(b, prm* ratio_n, prm* ratio_s, prm* ratio_m); + __gnu_cxx::typelist::apply(tst, tl); + } + + typedef multimap_insert_test test_type; + test_type tst(b, prm* ratio_n, prm* ratio_s, prm* ratio_m); + { + typedef native_multimap, alloc_t> native_t; + tst(native_t()); + } + + { + typedef + native_hash_multimap< + string_t, + int, + 8, + string_hash_fn, std::equal_to, + std::less, + alloc_t> + native_t; + + tst(native_t()); + } + } + catch (...) + { + std::cerr << "Test failed" << std::endl; + return -1; + } + return 0; +} + +void +usage() +{ + using namespace std; + cerr << "usage: multimap_text_insert_test.out " << + endl << endl; + + cerr << + "This test checks the performance of various associative containers " + "using their insert method. " << endl; + cerr << "Specifically, it does the following:" << endl; + cerr << "* Creates a vector of pairs of text words" << endl; + cerr << "* Inserts the elements into the container" << endl; + cerr << "* Repeats the above test a number of times" << endl; + + cerr << endl << endl; + + cerr << "prm = maximum size of distinct pair-first entries" << endl; + cerr << "ratio_n = minimum ratio of secondary keys to primary keys" << endl; + cerr << "ratio_s = step ratio of secondary keys to primary keys" << endl; + cerr << "ratio_m = maximum ratio of secondary keys to primary keys" << endl; +} diff --git a/libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem_usage_large.cc b/libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem_usage_large.cc new file mode 100644 index 000000000..396864552 --- /dev/null +++ b/libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem_usage_large.cc @@ -0,0 +1,41 @@ +// -*- C++ -*- + +// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the terms +// of the GNU General Public License as published by the Free Software +// Foundation; either version 3, or (at your option) any later +// version. + +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING3. If not see +// . + + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +#include "multimap_text_insert_mem_usage.hpp" + +void +set_test_parameters(size_t& prm, size_t&n, size_t& s, size_t& m) +{ + prm = 100; + n = 3; + s = 4; + m = 20; +} diff --git a/libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem_usage_small.cc b/libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem_usage_small.cc new file mode 100644 index 000000000..1dd88df6c --- /dev/null +++ b/libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem_usage_small.cc @@ -0,0 +1,41 @@ +// -*- C++ -*- + +// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the terms +// of the GNU General Public License as published by the Free Software +// Foundation; either version 3, or (at your option) any later +// version. + +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING3. If not see +// . + + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +#include "multimap_text_insert_mem_usage.hpp" + +void +set_test_parameters(size_t& prm, size_t&n, size_t& s, size_t& m) +{ + prm = 400; + n = 1; + s = 1; + m = 6; +} diff --git a/libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_timing.hpp b/libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_timing.hpp new file mode 100644 index 000000000..79f081263 --- /dev/null +++ b/libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_timing.hpp @@ -0,0 +1,137 @@ +// -*- C++ -*- + +// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the terms +// of the GNU General Public License as published by the Free Software +// Foundation; either version 3, or (at your option) any later +// version. + +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING3. If not see +// . + + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file multimap_text_insert_timing_test.cpp + * Contains test for inserting text words. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void +usage(); + +void +set_test_parameters(size_t& n, size_t&s, size_t& m, size_t& prm); + +int +main(int argc, char* a_p_argv[]) +{ + using namespace __gnu_pbds::test; + + std::string f_name = "thirty_years_among_the_dead_preproc.txt"; + size_t prm; + size_t ratio_n; + size_t ratio_s; + size_t ratio_m; + + set_test_parameters(prm, ratio_n, ratio_s, ratio_m); + + try + { + xml_test_performance_formatter fmt("Size", "Average time (sec.)"); + + typedef std::vector > vec_t; + vec_t a_v_init(prm); + distinct_text_populate(f_name, a_v_init); + + vec_t a_v; + twister_rand_gen g; + for (size_t i = 0; i < ratio_m; ++i) + for (size_t j = 0; j < a_v_init.size(); ++j) + a_v.push_back(std::make_pair(a_v_init[j].first, + static_cast(g.get_unsigned_long()))); + + vec_t::const_iterator b = a_v.begin(); + { + typedef mmap_tl_t >::type mmap_tl_tl; + mmap_tl_tl tl; + typedef multimap_insert_test test_type; + test_type tst(b, prm* ratio_n, prm* ratio_s, prm* ratio_m); + __gnu_cxx::typelist::apply(tst, tl); + } + + { + typedef native_hash_multimap native_t; + typedef multimap_insert_test test_type; + test_type tst(b, prm* ratio_n, prm* ratio_s, prm* ratio_m); + tst(native_t()); + } + + { + typedef native_multimap native_t; + typedef multimap_insert_test test_type; + test_type tst(b, prm* ratio_n, prm* ratio_s, prm* ratio_m); + tst(native_t()); + } + } + catch (...) + { + std::cerr << "Test failed" << std::endl; + return -1; + } + return 0; +} + +void +usage() +{ + using namespace std; + cerr << "usage: multimap_text_insert_test.out " << + endl << endl; + + cerr << + "This test checks the performance of various associative containers " + "using their insert method. " << endl; + cerr << "Specifically, it does the following:" << endl; + cerr << "* Creates a vector of pairs of text words" << endl; + cerr << "* Inserts the elements into the container" << endl; + cerr << "* Repeats the above test a number of times" << endl; + + cerr << endl << endl; + + cerr << "prm = maximum size of distinct pair-first entries" << endl; + cerr << "ratio_n = minimum ratio of secondary keys to primary keys" << endl; + cerr << "ratio_s = step ratio of secondary keys to primary keys" << endl; + cerr << "ratio_m = maximum ratio of secondary keys to primary keys" << endl; +} diff --git a/libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_timing_large.cc b/libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_timing_large.cc new file mode 100644 index 000000000..70c3dafaf --- /dev/null +++ b/libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_timing_large.cc @@ -0,0 +1,41 @@ +// -*- C++ -*- + +// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the terms +// of the GNU General Public License as published by the Free Software +// Foundation; either version 3, or (at your option) any later +// version. + +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING3. If not see +// . + + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +#include "multimap_text_insert_timing.hpp" + +void +set_test_parameters(size_t& prm, size_t&n, size_t& s, size_t& m) +{ + prm = 100; + n = 3; + s = 4; + m = 20; +} diff --git a/libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_timing_small.cc b/libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_timing_small.cc new file mode 100644 index 000000000..57deebb14 --- /dev/null +++ b/libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_timing_small.cc @@ -0,0 +1,41 @@ +// -*- C++ -*- + +// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the terms +// of the GNU General Public License as published by the Free Software +// Foundation; either version 3, or (at your option) any later +// version. + +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING3. If not see +// . + + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +#include "multimap_text_insert_timing.hpp" + +void +set_test_parameters(size_t& prm, size_t&n, size_t& s, size_t& m) +{ + prm = 400; + n = 1; + s = 1; + m = 6; +} diff --git a/libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_random_int_push_pop_timing.cc b/libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_random_int_push_pop_timing.cc new file mode 100644 index 000000000..6e59bdcd8 --- /dev/null +++ b/libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_random_int_push_pop_timing.cc @@ -0,0 +1,118 @@ +// -*- C++ -*- + +// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the terms +// of the GNU General Public License as published by the Free Software +// Foundation; either version 3, or (at your option) any later +// version. + +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING3. If not see +// . + + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file priority_queue_random_int_push_pop_timing_test.cpp + * Contains test for finding random_int. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void +usage(); + +int +main(int argc, char* a_p_argv[]) +{ + using namespace __gnu_pbds::test; + + size_t vn = 200; + size_t vs = 200; + size_t vm = 2100; + + try + { + xml_test_performance_formatter fmt("Size", "Average time (sec.)"); + + typedef std::vector > vector_type; + vector_type a_v(vm); + twister_rand_gen g; + + for (size_t i = 0; i < vm; ++i) + a_v[i] = std::make_pair(static_cast(g.get_unsigned_long()), 0); + vector_type::const_iterator b = a_v.begin(); + + typedef push_pop_test test_type; + test_type tst(b, vn, vs, vm); + { + typedef pq_common_types::performance_tl pq_tl_t; + pq_tl_t tl; + __gnu_cxx::typelist::apply(tst, tl); + } + + { + typedef native_priority_queue native_pq_t; + tst(native_pq_t()); + } + + { + typedef native_priority_queue native_pq_t; + tst(native_pq_t()); + } + } + catch(...) + { + std::cerr << "Test failed" << std::endl; + return -1; + } + return 0; +} + +void +usage() +{ + std::cerr << "usage: priority_queue_random_int_push_pop_timing_test " << + std::endl << std::endl; + + std::cerr << + "This test checks the performance of various priority_queue containers " + "using their push and pop method. " << std::endl; + std::cerr << "Specifically, it does the following:" << std::endl; + std::cerr << "* Creates a vector of random integers " << std::endl; + std::cerr << "* Pushes the elements into the container" << std::endl; + std::cerr << "* Pops the elements from the container" << std::endl; + std::cerr << "* Repeats the above test a number of times " + << std::endl; + + std::cerr << std::endl << std::endl; + + std::cerr << "vn = minimum size of the vector" << std::endl; + std::cerr << "vs = step size of the vector" << std::endl; + std::cerr << "vm = maximum size of the vector" << std::endl; +} diff --git a/libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_random_int_push_timing.cc b/libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_random_int_push_timing.cc new file mode 100644 index 000000000..5245521c8 --- /dev/null +++ b/libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_random_int_push_timing.cc @@ -0,0 +1,116 @@ +// -*- C++ -*- + +// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the terms +// of the GNU General Public License as published by the Free Software +// Foundation; either version 3, or (at your option) any later +// version. + +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING3. If not see +// . + + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file priority_queue_random_int_push_timing_test.cpp + * Contains test for finding random_int. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void +usage(); + +int +main(int argc, char* a_p_argv[]) +{ + using namespace __gnu_pbds::test; + + size_t vn = 200; + size_t vs = 200; + size_t vm = 2100; + try + { + xml_test_performance_formatter fmt("Size", "Average time (sec.)"); + + typedef std::vector > vec_t; + vec_t a_v(vm); + twister_rand_gen g; + for (size_t i = 0; i < vm; ++i) + a_v[i] = std::make_pair(static_cast(g.get_unsigned_long()), 0); + + typedef push_test test_t; + vec_t::const_iterator b = a_v.begin(); + test_t tst(b, vn, vs, vm); + { + typedef pq_common_types::performance_tl pq_tl_t; + pq_tl_t tl; + __gnu_cxx::typelist::apply(tst, tl); + } + + { + typedef native_priority_queue native_pq_t; + tst(native_pq_t()); + } + + { + typedef native_priority_queue native_pq_t; + tst(native_pq_t()); + } + } + catch (...) + { + std::cerr << "Test failed" << std::endl; + return -1; + } + return 0; +} + +void +usage() +{ + using namespace std; + cerr << "usage: priority_queue_random_int_push_timing_test " << + endl << endl; + + cerr << + "This test checks the performance of various priority_queue containers " + "using their push method. " << endl; + cerr << "Specifically, it does the following:" << endl; + cerr << "* Creates a vector of random integers " << endl; + cerr << "* Pushes the elements into the container" << endl; + cerr << "* Repeats the above test a number of times " + << endl; + + cerr << endl << endl; + + cerr << "vn = minimum size of the vector" << endl; + cerr << "vs = step size of the vector" << endl; + cerr << "vm = maximum size of the vector" << endl; +} diff --git a/libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_join_timing.cc b/libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_join_timing.cc new file mode 100644 index 000000000..cad1d3596 --- /dev/null +++ b/libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_join_timing.cc @@ -0,0 +1,113 @@ +// -*- C++ -*- + +// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the terms +// of the GNU General Public License as published by the Free Software +// Foundation; either version 3, or (at your option) any later +// version. + +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING3. If not see +// . + + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file priority_queue_text_join_timing_test.cpp + * Contains test for finding text. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void +usage() +{ + using namespace std; + cerr << "usage: priority_queue_text_join_timing_test "; + cerr << endl << endl; + + cerr << "This test checks the performance of various priority_queueiative containers " + "using their join method. " << endl; + cerr << "Specifically, it does the following:" << endl; + cerr << "* Creates a vector of text words " << endl; + cerr << "* Pushes the elements into two containers" << endl; + cerr << "* Joins the two containers (and measures this time)" << endl; + cerr << "* Repeats the above test a number of times " << endl; + cerr << endl << endl; + + cerr << "f_name = file name containing the text words. " + "Each line should contain one word." << endl; + cerr << "vn = minimum size of the vector" << endl; + cerr << "vs = step size of the vector" << endl; + cerr << "vm = maximum size of the vector" << endl; +} + +int +main(int argc, char* a_p_argv[]) +{ + using namespace __gnu_pbds::test; + + std::string f_name = "thirty_years_among_the_dead_preproc.txt"; + size_t vn = 200; + size_t vs = 200; + size_t vm = 2100; + + try + { + xml_test_performance_formatter fmt("Size", "Average time (sec.)"); + + typedef std::vector > vec_t; + vec_t a_v(vm); + text_populate(f_name, a_v); + + typedef join_test test_t; + vec_t::const_iterator b = a_v.begin(); + test_t tst(b, vn, vs, vm); + { + typedef pq_common_types::performance_tl pq_tl_t; + pq_tl_t tl; + __gnu_cxx::typelist::apply(tst, tl); + } + + { + typedef native_priority_queue native_pq_t; + tst(native_pq_t()); + } + + { + typedef native_priority_queue native_pq_t; + tst(native_pq_t()); + } + } + catch(...) + { + std::cerr << "Test failed" << std::endl; + return -1; + } + return 0; +} diff --git a/libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_modify_down_timing.cc b/libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_modify_down_timing.cc new file mode 100644 index 000000000..ce7f3ff49 --- /dev/null +++ b/libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_modify_down_timing.cc @@ -0,0 +1,37 @@ +// -*- C++ -*- + +// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the terms +// of the GNU General Public License as published by the Free Software +// Foundation; either version 3, or (at your option) any later +// version. + +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING3. If not see +// . + + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +#include "priority_queue_text_modify_timing.hpp" + +void +set_test_parameters(bool& b) +{ b = false; } + diff --git a/libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_modify_timing.hpp b/libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_modify_timing.hpp new file mode 100644 index 000000000..8f31e11d9 --- /dev/null +++ b/libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_modify_timing.hpp @@ -0,0 +1,127 @@ +// -*- C++ -*- + +// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the terms +// of the GNU General Public License as published by the Free Software +// Foundation; either version 3, or (at your option) any later +// version. + +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING3. If not see +// . + + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file priority_queue_text_modify_timing_test.cpp + * Contains test for finding text. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void +usage(); + +void +set_test_parameters(bool& b); + +int +main(int argc, char* a_p_argv[]) +{ + using namespace __gnu_pbds::test; + + std::string f_name = "thirty_years_among_the_dead_preproc.txt"; + size_t vn = 100; + size_t vs = 100; + size_t vm = 1100; + bool modify_up; + + set_test_parameters(modify_up); + + try + { + xml_test_performance_formatter fmt("Size", "Average time (sec.)"); + + typedef std::vector > vec_t; + vec_t a_v(vm); + text_populate(f_name, a_v); + + typedef modify_test test_t; + vec_t::const_iterator b = a_v.begin(); + test_t tst(b, vn, vs, vm, modify_up); + { + typedef pq_common_types::performance_tl pq_tl_t; + pq_tl_t tl; + __gnu_cxx::typelist::apply(tst, tl); + } + + { + typedef native_priority_queue native_pq_t; + tst(native_pq_t()); + } + + { + typedef native_priority_queue native_pq_t; + tst(native_pq_t()); + } + } + catch (...) + { + std::cerr << "Test failed" << std::endl; + return -1; + } + return 0; +} + +void +usage() +{ + using namespace std; + cerr << "usage: priority_queue_text_modify_timing_test " << + endl << endl; + + cerr << + "This test checks the performance of various priority_queueiative containers " + "using their modify method. " << endl; + cerr << "Specifically, it does the following:" << endl; + cerr << "* Creates a vector of text words " << endl; + cerr << "* Pushes the elements into the container" << endl; + cerr << "* Modifies the words in the container. If modify_up == 't', then" << endl; + cerr << "* it modifies them to the largest word. If modify_up == 'f', then" << endl; + cerr << "* it modifies them to the smallest word." << endl; + cerr << "* Repeats the above test a number of times " + << endl; + + cerr << endl << endl; + + cerr << "f_name = file name containing the text words. " + "Each line should contain one word." << endl; + cerr << "vn = minimum size of the vector" << endl; + cerr << "vs = step size of the vector" << endl; + cerr << "vm = maximum size of the vector" << endl; +} diff --git a/libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_modify_up_timing.cc b/libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_modify_up_timing.cc new file mode 100644 index 000000000..cf6e49993 --- /dev/null +++ b/libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_modify_up_timing.cc @@ -0,0 +1,37 @@ +// -*- C++ -*- + +// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the terms +// of the GNU General Public License as published by the Free Software +// Foundation; either version 3, or (at your option) any later +// version. + +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING3. If not see +// . + + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +#include "priority_queue_text_modify_timing.hpp" + +void +set_test_parameters(bool& b) +{ b = true; } + diff --git a/libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_pop_mem_usage.cc b/libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_pop_mem_usage.cc new file mode 100644 index 000000000..8c0181e98 --- /dev/null +++ b/libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_pop_mem_usage.cc @@ -0,0 +1,119 @@ +// -*- C++ -*- + +// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the terms +// of the GNU General Public License as published by the Free Software +// Foundation; either version 3, or (at your option) any later +// version. + +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING3. If not see +// . + + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file priority_queue_text_push_pop_timing_test.cpp + * Contains test for finding text. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void +usage(); + +int +main(int argc, char* a_p_argv[]) +{ + using namespace __gnu_pbds::test; + std::string f_name = "thirty_years_among_the_dead_preproc.txt"; + + size_t vn = 200; + size_t vs = 200; + size_t vm = 2100; + try + { + xml_test_performance_formatter fmt("Size", "Memory (bytes)"); + typedef __gnu_test::tracker_allocator callocator_type; + typedef __gnu_test::tracker_allocator sallocator_type; + typedef std::basic_string, callocator_type> string_t; + + typedef std::vector > vec_t; + vec_t a_v(vm); + text_populate(f_name, a_v); + + typedef pop_test test_t; + vec_t::const_iterator b = a_v.begin(); + test_t tst(b, vn, vs, vm); + { + typedef pq_common_types, callocator_type>::performance_tl pq_tl_t; + pq_tl_t tl; + __gnu_cxx::typelist::apply(tst, tl); + } + + { + typedef native_priority_queue, sallocator_type> native_pq_t; + tst(native_pq_t()); + } + + { + typedef native_priority_queue, sallocator_type> native_pq_t; + tst(native_pq_t()); + } + } + catch (...) + { + std::cerr << "Test failed" << std::endl; + return -1; + } + return 0; +} + +void +usage() +{ + using namespace std; + cerr << "usage: priority_queue_text_pop_mem_usage_test " << + endl << endl; + + cerr << + "This test checks the performance of various priority_queueiative containers " + "using their push method. " << endl; + cerr << "Specifically, it does the following:" << endl; + cerr << "* Creates a vector of text words " << endl; + cerr << "* Pushes the elements into the container, then pops until it's empty." << endl; + + cerr << endl << endl; + + cerr << "f_name = file name containing the text words. " + "Each line should contain one word." << endl; + cerr << "vn = minimum size of the vector" << endl; + cerr << "vs = step size of the vector" << endl; + cerr << "vm = maximum size of the vector" << endl; +} diff --git a/libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_push_pop_timing.cc b/libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_push_pop_timing.cc new file mode 100644 index 000000000..a55a61e7b --- /dev/null +++ b/libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_push_pop_timing.cc @@ -0,0 +1,116 @@ +// -*- C++ -*- + +// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the terms +// of the GNU General Public License as published by the Free Software +// Foundation; either version 3, or (at your option) any later +// version. + +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING3. If not see +// . + + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file priority_queue_text_push_pop_timing_test.cpp + * Contains test for finding text. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void +usage(); + +int +main(int argc, char* a_p_argv[]) +{ + using namespace __gnu_pbds::test; + std::string f_name = "thirty_years_among_the_dead_preproc.txt"; + size_t vn = 200; + size_t vs = 200; + size_t vm = 2100; + + try + { + xml_test_performance_formatter fmt("Size", "Average time (sec.)"); + + typedef std::vector > vec_t; + vec_t a_v(vm); + text_populate(f_name, a_v); + + typedef push_pop_test test_t; + vec_t::const_iterator b = a_v.begin(); + test_t tst(b, vn, vs, vm); + { + typedef pq_common_types::performance_tl pq_tl_t; + pq_tl_t tl; + __gnu_cxx::typelist::apply(tst, tl); + } + + { + typedef native_priority_queue native_pq_t; + tst(native_pq_t()); + } + + { + typedef native_priority_queue native_pq_t; + tst(native_pq_t()); + } + } + catch(...) + { + std::cerr << "Test failed" << std::endl; + return -1; + } + return 0; +} + +void +usage() +{ + using namespace std; + cerr << "usage: priority_queue_text_push_pop_timing_test " + " " << endl << endl; + + cerr << "This test checks the performance of various" + "priority_queue containers using their push method. " << endl; + cerr << "Specifically, it does the following:" << endl; + cerr << "* Creates a vector of text words " << endl; + cerr << "* Pushes the elements into the container, then pops until it's empty." << endl; + cerr << "* Repeats the above test a number of times) " + << endl; + + cerr << endl << endl; + + cerr << "f_name = file name containing the text words. " + "Each line should contain one word." << endl; + cerr << "vn = minimum size of the vector" << endl; + cerr << "vs = step size of the vector" << endl; + cerr << "vm = maximum size of the vector" << endl; +} diff --git a/libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_push_timing.cc b/libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_push_timing.cc new file mode 100644 index 000000000..ca5ff6d2a --- /dev/null +++ b/libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_push_timing.cc @@ -0,0 +1,117 @@ +// -*- C++ -*- + +// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the terms +// of the GNU General Public License as published by the Free Software +// Foundation; either version 3, or (at your option) any later +// version. + +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING3. If not see +// . + + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file priority_queue_text_push_timing_test.cpp + * Contains test for finding text. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void +usage(); + +int +main(int argc, char* a_p_argv[]) +{ + using namespace __gnu_pbds::test; + std::string f_name = "thirty_years_among_the_dead_preproc.txt"; + size_t vn = 200; + size_t vs = 200; + size_t vm = 2100; + + try + { + xml_test_performance_formatter fmt("Size", "Average time (sec.)"); + + typedef std::vector > vec_t; + vec_t a_v(vm); + text_populate(f_name, a_v); + + typedef push_test test_t; + vec_t::const_iterator b = a_v.begin(); + test_t tst(b, vn, vs, vm); + { + typedef pq_common_types::performance_tl pq_tl_t; + pq_tl_t tl; + __gnu_cxx::typelist::apply(tst, tl); + } + + { + typedef native_priority_queue native_pq_t; + tst(native_pq_t()); + } + + { + typedef native_priority_queue native_pq_t; + tst(native_pq_t()); + } + } + catch(...) + { + std::cerr << "Test failed" << std::endl; + return -1; + } + return 0; +} + +void +usage() +{ + using namespace std; + cerr << "usage: priority_queue_text_push_timing_test " + << endl << endl; + + cerr << + "This test checks the performance of various priority_queue containers " + "using their push method. " << endl; + cerr << "Specifically, it does the following:" << endl; + cerr << "* Creates a vector of text words " << endl; + cerr << "* Pushes the elements into the container" << endl; + cerr << "* Repeats the above test a number of times " + << endl; + + cerr << endl << endl; + + cerr << "f_name = file name containing the text words. " + "Each line should contain one word." << endl; + cerr << "vn = minimum size of the vector" << endl; + cerr << "vs = step size of the vector" << endl; + cerr << "vm = maximum size of the vector" << endl; +} diff --git a/libstdc++-v3/testsuite/performance/ext/pb_ds/random_int_find_timing.cc b/libstdc++-v3/testsuite/performance/ext/pb_ds/random_int_find_timing.cc new file mode 100644 index 000000000..cdf151051 --- /dev/null +++ b/libstdc++-v3/testsuite/performance/ext/pb_ds/random_int_find_timing.cc @@ -0,0 +1,126 @@ +// -*- C++ -*- + +// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the terms +// of the GNU General Public License as published by the Free Software +// Foundation; either version 3, or (at your option) any later +// version. + +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING3. If not see +// . + + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file random_int_find_timing_test.cpp + * Contains test for finding random integers. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void +usage(); + +int +main(int argc, char* a_p_argv[]) +{ + using namespace __gnu_pbds::test; + + size_t vn = 200; + size_t vs = 200; + size_t vm = 2100; + + try + { + xml_test_performance_formatter fmt("Size", "Average time (sec.)"); + + typedef std::vector< std::pair< int, char> > vec_t; + vec_t a_v(vm); + twister_rand_gen g; + for (size_t i = 0; i < vm; ++i) + a_v[i] = std::make_pair(static_cast(g.get_unsigned_long()), 0); + vec_t::const_iterator b = a_v.begin(); + + typedef find_test< vec_t::const_iterator> test_t; + test_t tst(b, b, vn, vs, vm, vn, vs, vm); + { + typedef native_hash_map< int, char> native_t; + tst(native_t()); + } + + { + typedef native_map< int, char> native_t; + tst(native_t()); + } + + { + typedef hash_common_types::performance_tl tl_t; + tl_t tl; + __gnu_cxx::typelist::apply(tst, tl); + } + + { + typedef tree_common_types::performance_tl tl_t; + tl_t tl; + __gnu_cxx::typelist::apply(tst, tl); + } + } + catch (...) + { + std::cerr << "Test failed" << std::endl; + return -1; + } + return 0; +} + +void +usage() +{ + using namespace std; + cerr << "usage: hash_random_int_find_timing_test " << + endl << endl; + + cerr << + "This test checks the performance of various associative containers " + "using their find method. " << endl; + cerr << "Specifically, it does the following:" << endl; + cerr << "* Creates a vector of random integers " << endl; + cerr << "* Inserts the elements into the container" << endl; + cerr << "* Performs a sequence of find operations. At each iteration, " + "it finds, for each integer in the vector, its entry in the " + "container, using the find method"; + cerr << "* Repeats the above test a number of times" << endl; + + cerr << endl << endl; + + cerr << "vn = minimum size of the vector" << endl; + cerr << "vs = step size of the vector" << endl; + cerr << "vm = maximum size of the vector" << endl; +} diff --git a/libstdc++-v3/testsuite/performance/ext/pb_ds/random_int_subscript_find_timing.cc b/libstdc++-v3/testsuite/performance/ext/pb_ds/random_int_subscript_find_timing.cc new file mode 100644 index 000000000..1680ff4ff --- /dev/null +++ b/libstdc++-v3/testsuite/performance/ext/pb_ds/random_int_subscript_find_timing.cc @@ -0,0 +1,126 @@ +// -*- C++ -*- + +// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the terms +// of the GNU General Public License as published by the Free Software +// Foundation; either version 3, or (at your option) any later +// version. + +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING3. If not see +// . + + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file random_int_subscript_find_timing_test.cpp + * Contains test for subscripting random integers. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void +usage(); + +int +main(int argc, char* a_p_argv[]) +{ + using namespace __gnu_pbds::test; + + size_t vn = 200; + size_t vs = 200; + size_t vm = 2100; + + try + { + xml_test_performance_formatter fmt("Size", "Average time (sec.)"); + + typedef std::vector > vec_t; + vec_t a_v(vm); + twister_rand_gen g; + for (size_t i = 0; i < vm; ++i) + a_v[i] = std::make_pair(static_cast(g.get_unsigned_long()), 0); + vec_t::const_iterator b = a_v.begin(); + + typedef subscript_find_test test_t; + test_t tst(b, b, vn, vs, vm, vn, vs, vm); + { + typedef hash_common_types::performance_tl tl_t; + tl_t tl; + __gnu_cxx::typelist::apply(tst, tl); + } + + { + typedef tree_common_types::performance_tl tl_t; + tl_t tl; + __gnu_cxx::typelist::apply(tst, tl); + } + + { + typedef native_hash_map native_t; + tst(native_t()); + } + + { + typedef native_map< int, size_t> native_t; + tst(native_t()); + } + } + catch (...) + { + std::cerr << "Test failed" << std::endl; + return -1; + } + return 0; +} + +void +usage() +{ + using namespace std; + cerr << "usage: hash_random_int_subscript_find_timing_test " << + endl << endl; + + cerr << + "This test checks the performance of various associative containers " + "using their find method. " << endl; + cerr << "Specifically, it does the following:" << endl; + cerr << "* Creates a vector of random integers " << endl; + cerr << "* Inserts the elements into the container" << endl; + cerr << "* Performs a sequence of find operations. At each iteration, " + "it finds, for each integer in the vector, its entry in the " + "container, using the subscript operator"; + cerr << "* Repeats the above test a number of times" << endl; + + cerr << endl << endl; + + cerr << "vn = minimum size of the vector" << endl; + cerr << "vs = step size of the vector" << endl; + cerr << "vm = maximum size of the vector" << endl; +} diff --git a/libstdc++-v3/testsuite/performance/ext/pb_ds/random_int_subscript_insert_timing.cc b/libstdc++-v3/testsuite/performance/ext/pb_ds/random_int_subscript_insert_timing.cc new file mode 100644 index 000000000..07d644e4f --- /dev/null +++ b/libstdc++-v3/testsuite/performance/ext/pb_ds/random_int_subscript_insert_timing.cc @@ -0,0 +1,123 @@ +// -*- C++ -*- + +// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the terms +// of the GNU General Public License as published by the Free Software +// Foundation; either version 3, or (at your option) any later +// version. + +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING3. If not see +// . + + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file random_int_subscript_insert_timing_test.cpp + * Contains test for subscripting random integers. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void +usage(); + +int +main(int argc, char* a_p_argv[]) +{ + using namespace __gnu_pbds::test; + size_t vn = 200; + size_t vs = 200; + size_t vm = 2100; + + try + { + xml_test_performance_formatter fmt("Size", "Average time (sec.)"); + + typedef std::vector > vec_t; + vec_t a_v(vm); + twister_rand_gen g; + + for (size_t i = 0; i < vm; ++i) + a_v[i] = std::make_pair(static_cast(g.get_unsigned_long()), 0); + vec_t::const_iterator b = a_v.begin(); + + typedef subscript_insert_test test_t; + test_t tst(b, b, vn, vs, vm, vn, vs, vm); + { + typedef hash_common_types::performance_tl tl_t; + tl_t tl; + __gnu_cxx::typelist::apply(tst, tl); + } + + { + typedef tree_common_types::performance_tl tl_t; + tl_t tl; + __gnu_cxx::typelist::apply(tst, tl); + } + + { + typedef native_hash_map< int, size_t> native_t; + tst(native_t()); + } + + { + typedef native_map< int, size_t> native_t; + tst(native_t()); + } + } + catch(...) + { + std::cerr << "Test failed" << std::endl; + return -1; + } + return 0; +} + +void +usage() +{ + using namespace std; + cerr << "usage: hash_random_int_subscript_insert_timing_test " + << endl << endl; + + cerr << + "This test checks the performance of various associative containers " + "using their find method. " << endl; + cerr << "Specifically, it does the following:" << endl; + cerr << "* Creates a vector of random integers " << endl; + cerr << "* Inserts the elements into the container" << endl; + cerr << "* Repeats the above test a number of times" << endl; + + cerr << endl << endl; + + cerr << "vn = minimum size of the vector" << endl; + cerr << "vs = step size of the vector" << endl; + cerr << "vm = maximum size of the vector" << endl; +} diff --git a/libstdc++-v3/testsuite/performance/ext/pb_ds/text_find_timing.cc b/libstdc++-v3/testsuite/performance/ext/pb_ds/text_find_timing.cc new file mode 100644 index 000000000..b997a5ee9 --- /dev/null +++ b/libstdc++-v3/testsuite/performance/ext/pb_ds/text_find_timing.cc @@ -0,0 +1,145 @@ +// -*- C++ -*- + +// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the terms +// of the GNU General Public License as published by the Free Software +// Foundation; either version 3, or (at your option) any later +// version. + +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING3. If not see +// . + + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file text_find_timing_test.cpp + * Contains test for finding text. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void +usage(); + +int +main(int argc, char* a_p_argv[]) +{ + using namespace __gnu_pbds::test; + std::string f_name = "thirty_years_among_the_dead_preproc.txt"; + size_t vn = 200; + size_t vs = 200; + size_t vm = 2100; + + try + { + xml_test_performance_formatter fmt("Size", "Average time (sec.)"); + typedef std::vector > vec_t; + + vec_t a_v(vm); + text_populate(f_name, a_v); + typedef find_test test_t; + vec_t::const_iterator b = a_v.begin(); + test_t tst(b, b, vn, vs, vm, vn, vs, vm); + { + typedef trie_common_types::performance_tl pat_trie_tl_t; + + typedef tree_common_types::performance_tl tree_tl_t; + + typedef hash_common_types::performance_tl hash_tl_t; + + typedef __gnu_cxx::typelist::append::type>::type tl_t; + + tl_t tl; + __gnu_cxx::typelist::apply(tst, tl); + } + + { + typedef native_map native_map_t; + tst(native_map_t()); + +#ifdef PB_DS_USE_TR1 + typedef native_hash_map native_hash_map_t; + tst(native_hash_map_t()); + + typedef + native_hash_map< + std::string, + char, + 8, + string_hash_fn, + std::equal_to< + std::string>, + std::less< + std::string>, + std::allocator< + char>, + true> + sth_native_hash_map_t; + + tst(sth_native_hash_map_t()); +#endif + } + } + catch(...) + { + std::cerr << "Test failed" << std::endl; + return -1; + } + return 0; +} + +void +usage() +{ + using namespace std; + cerr << "usage: text_find_timing_test " << + endl << endl; + + cerr << + "This test checks the performance of various associative containers " + "using their find method. " << endl; + cerr << "Specifically, it does the following:" << endl; + cerr << "* Creates a vector of text words " << endl; + cerr << "* Inserts the elements into the container" << endl; + cerr << "* Performs a sequence of find operations. At each iteration, " + "it finds, for each word in the vector, its entry in the " + "container, using the find method" << endl; + cerr << "* Repeats the above test a number of times) " + << endl; + + cerr << endl << endl; + + cerr << "f_name = file name containing the text words. " + "Each line should contain one word." << endl; + cerr << "vn = minimum size of the vector" << endl; + cerr << "vs = step size of the vector" << endl; + cerr << "vm = maximum size of the vector" << endl; +} diff --git a/libstdc++-v3/testsuite/performance/ext/pb_ds/tree_order_statistics_timing.cc b/libstdc++-v3/testsuite/performance/ext/pb_ds/tree_order_statistics_timing.cc new file mode 100644 index 000000000..95806685b --- /dev/null +++ b/libstdc++-v3/testsuite/performance/ext/pb_ds/tree_order_statistics_timing.cc @@ -0,0 +1,105 @@ +// -*- C++ -*- + +// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the terms +// of the GNU General Public License as published by the Free Software +// Foundation; either version 3, or (at your option) any later +// version. + +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING3. If not see +// . + + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file tree_order_statistics_timing_test.cpp + * Contains test for order_statisticsing trees. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +void +usage(); + +int +main(int argc, char* a_p_argv[]) +{ + using namespace __gnu_pbds::test; + size_t vn = 200; + size_t vs = 200; + size_t vm = 2100; + + try + { + xml_test_performance_formatter fmt("Size", "Average time (sec.)"); + + { + typedef tree_order_statistics_test< true> test_t; + test_t tst(vn, vs, vm); + typedef tree_common_types, __gnu_pbds::tree_order_statistics_node_update>::performance_tl tl_t; + tl_t tl; + __gnu_cxx::typelist::apply(tst, tl); + } + + { + typedef tree_order_statistics_test test_t; + test_t tst(vn, vs, vm); + typedef native_set native_set_t; + tst(native_set_t()); + } + } + catch(...) + { + std::cerr << "Test failed" << std::endl; + return -1; + } + return 0; +} + +void +usage() +{ + using namespace std; + cerr << "usage: tree_order_statistics_timing_test.out " << + endl << endl; + + cerr << "This test checks the performance of order statistics" + " in tree based containers. " << endl; + cerr << "Specifically, it does the following:" << endl; + cerr << "* Creates a tree" << endl; + cerr << "* Inserts integers into the tree" << endl; + cerr << "* Checks the order-statistics of each entry in the tree" << endl; + cerr << "* Repeats the above test some times" + << endl; + + cerr << endl << endl; + + cerr << "vn = minimum size of the tree" << endl; + cerr << "vs = step size of the tree" << endl; + cerr << "vm = maximum size of the tree" << endl; +} diff --git a/libstdc++-v3/testsuite/performance/ext/pb_ds/tree_split_join_timing.cc b/libstdc++-v3/testsuite/performance/ext/pb_ds/tree_split_join_timing.cc new file mode 100644 index 000000000..c10fe01cd --- /dev/null +++ b/libstdc++-v3/testsuite/performance/ext/pb_ds/tree_split_join_timing.cc @@ -0,0 +1,107 @@ +// -*- C++ -*- + +// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the terms +// of the GNU General Public License as published by the Free Software +// Foundation; either version 3, or (at your option) any later +// version. + +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING3. If not see +// . + + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file tree_split_join_timing_test.cpp + * Contains test for joining trees. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +void +usage(); + +int +main(int argc, char* a_p_argv[]) +{ + using namespace __gnu_pbds::test; + size_t vn = 200; + size_t vs = 200; + size_t vm = 2100; + + try + { + xml_test_performance_formatter fmt("Size", "Average time (sec.)"); + + { + typedef tree_split_join_test test_t; + test_t tst(vn, vs, vm); + + typedef tree_common_types::performance_tl tl_t; + tl_t tl; + __gnu_cxx::typelist::apply(tst, tl); + } + + { + typedef tree_split_join_test test_t; + test_t tst(vn, vs, vm); + typedef native_set native_set_t; + tst(native_set_t()); + } + } + catch(...) + { + std::cerr << "Test failed" << std::endl; + return -1; + } + return 0; +} + +void +usage() +{ + using namespace std; + cerr << "usage: tree_split_join_test.cpp " << + endl << endl; + + cerr << "This test checks the performance of splitting joining" + "tree based containers. " << endl; + cerr << "Specifically, it does the following:" << endl; + cerr << "* Creates a tree " << endl; + cerr << "* Inserts integers into the tree" << endl; + cerr << "* Splits half the tree into a different tree" << endl; + cerr << "* Joins the trees" << endl; + cerr << "* Repeats the above test a given number of times) " + << endl; + + cerr << endl << endl; + + cerr << "vn = minimum size of the tree" << endl; + cerr << "vs = step size of the tree" << endl; + cerr << "vm = maximum size of the tree" << endl; +} diff --git a/libstdc++-v3/testsuite/performance/ext/pb_ds/tree_text_insert_timing.cc b/libstdc++-v3/testsuite/performance/ext/pb_ds/tree_text_insert_timing.cc new file mode 100644 index 000000000..43466a2bf --- /dev/null +++ b/libstdc++-v3/testsuite/performance/ext/pb_ds/tree_text_insert_timing.cc @@ -0,0 +1,116 @@ +// -*- C++ -*- + +// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the terms +// of the GNU General Public License as published by the Free Software +// Foundation; either version 3, or (at your option) any later +// version. + +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING3. If not see +// . + + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file tree_text_insert_timing_test.cpp + * Contains test for finding text. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void +usage(); + +int +main(int argc, char* a_p_argv[]) +{ + using namespace __gnu_pbds::test; + + std::string f_name = "thirty_years_among_the_dead_preproc.txt"; + size_t vn = 200; + size_t vs = 200; + size_t vm = 2100; + try + { + xml_test_performance_formatter fmt("Size", "Average time (sec.)"); + + typedef std::vector > vec_t; + vec_t a_v(vm); + text_populate(f_name, a_v); + + typedef insert_test< vec_t::const_iterator> test_t; + vec_t::const_iterator b = a_v.begin(); + test_t tst(b, vn, vs, vm); + { + typedef trie_common_types::performance_tl pat_trie_tl_t; + typedef tree_common_types::performance_tl tree_tl_t; + typedef __gnu_cxx::typelist::append::type tl_t; + tl_t tl; + __gnu_cxx::typelist::apply(tst, tl); + } + + { + typedef native_map native_map_t; + tst(native_map_t()); + } + } + catch (...) + { + std::cerr << "Test failed" << std::endl; + return -1; + } + return 0; +} + +void +usage() +{ + using namespace std; + cerr << "usage: tree_text_insert_timing_test " << + endl << endl; + + cerr << + "This test checks the performance of various associative containers " + "using their insert method. " << endl; + cerr << "Specifically, it does the following:" << endl; + cerr << "* Creates a vector of text words " << endl; + cerr << "* Inserts the elements into the container" << endl; + cerr << "* Repeats the above test a number of times) " + << endl; + + cerr << endl << endl; + + cerr << "f_name = file name containing the text words. " + "Each line should contain one word." << endl; + cerr << "vn = minimum size of the vector" << endl; + cerr << "vs = step size of the vector" << endl; + cerr << "vm = maximum size of the vector" << endl; +} diff --git a/libstdc++-v3/testsuite/performance/ext/pb_ds/tree_text_lor_find_timing.cc b/libstdc++-v3/testsuite/performance/ext/pb_ds/tree_text_lor_find_timing.cc new file mode 100644 index 000000000..dc205547d --- /dev/null +++ b/libstdc++-v3/testsuite/performance/ext/pb_ds/tree_text_lor_find_timing.cc @@ -0,0 +1,115 @@ +// -*- C++ -*- + +// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the terms +// of the GNU General Public License as published by the Free Software +// Foundation; either version 3, or (at your option) any later +// version. + +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING3. If not see +// . + + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file tree_text_lor_find_timing_test.cpp + * Contains test for finding text with locality of reference. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void +usage(); + +int +main(int argc, char* a_p_argv[]) +{ + using namespace __gnu_pbds::test; + + std::string f_name = "thirty_years_among_the_dead_preproc.txt"; + size_t vn = 200; + size_t vs = 200; + size_t vm = 2100; + + try + { + xml_test_performance_formatter fmt("Size", "Average time (sec.)"); + + typedef std::vector > vec_t; + vec_t a_v(vm); + text_populate(f_name, a_v); + + typedef find_test test_t; + vec_t::const_iterator b = a_v.begin(); + test_t tst(b, b, vn, vs, vm, vn, vs, vm); + { + typedef native_map native_set_t; + tst(native_set_t()); + } + + { + typedef tree_common_types::performance_tl tree_tl_t; + tree_tl_t tl; + __gnu_cxx::typelist::apply(tst, tl); + } + } + catch(...) + { + std::cerr << "Test failed" << std::endl; + return -1; + } + return 0; +} + +void +usage() +{ + using namespace std; + cerr << "usage: tree_text_lor_find_performance_test " + << endl << endl; + + cerr << + "This test checks the performance of various associative containers " + "using their find method. " << endl; + cerr << "Specifically, it does the following:" << endl; + cerr << "* Creates a vector of text words " << endl; + cerr << "* Inserts the elements into the container" << endl; + cerr << "* Performs a sequence of find operations. At each iteration, " + "it finds, for each word in the vector, its entry in the " + "container, using the find method" << endl; + cerr << "* Repeats the above test a number of times" << endl; + + cerr << endl << endl; + + cerr << "f_name = file name containing the text words. " + "Each line should contain one word." << endl; + cerr << "vn = minimum size of the vector" << endl; + cerr << "vs = step size of the vector" << endl; + cerr << "vm = maximum size of the vector" << endl; +} -- cgit v1.2.3