1259701Sdim// -*- C++ -*- 2259701Sdim 3259701Sdim// Copyright (C) 2005-2015 Free Software Foundation, Inc. 4259701Sdim// 5259701Sdim// This file is part of the GNU ISO C++ Library. This library is free 6259701Sdim// software; you can redistribute it and/or modify it under the terms 7259701Sdim// of the GNU General Public License as published by the Free Software 8259701Sdim// Foundation; either version 3, or (at your option) any later 9259701Sdim// version. 10259701Sdim 11259701Sdim// This library is distributed in the hope that it will be useful, but 12259701Sdim// WITHOUT ANY WARRANTY; without even the implied warranty of 13259701Sdim// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14259701Sdim// General Public License for more details. 15259701Sdim 16259701Sdim// You should have received a copy of the GNU General Public License 17259701Sdim// along with this library; see the file COPYING3. If not see 18259701Sdim// <http://www.gnu.org/licenses/>. 19259701Sdim 20259701Sdim 21259701Sdim// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. 22259701Sdim 23259701Sdim// Permission to use, copy, modify, sell, and distribute this software 24259701Sdim// is hereby granted without fee, provided that the above copyright 25259701Sdim// notice appears in all copies, and that both that copyright notice 26259701Sdim// and this permission notice appear in supporting documentation. None 27259701Sdim// of the above authors, nor IBM Haifa Research Laboratories, make any 28259701Sdim// representation about the suitability of this software for any 29// purpose. It is provided "as is" without express or implied 30// warranty. 31 32/** 33 * @file tree_order_statistics_timing_test.cpp 34 * Contains test for order_statisticsing trees. 35 */ 36 37#include <iostream> 38#include <vector> 39#include <ext/typelist.h> 40#include <performance/io/xml_formatter.hpp> 41#include <io/verified_cmd_line_input.hpp> 42#include <testsuite_rng.h> 43#include <common_type/assoc/common_type.hpp> 44#include <performance/assoc/timing/tree_order_statistics_test.hpp> 45 46void 47usage(); 48 49int 50main(int argc, char* a_p_argv[]) 51{ 52 using namespace __gnu_pbds::test; 53 size_t vn = 200; 54 size_t vs = 200; 55 size_t vm = 2100; 56 57 try 58 { 59 xml_test_performance_formatter fmt("Size", "Average time (sec.)"); 60 61 { 62 typedef tree_order_statistics_test< true> test_t; 63 test_t tst(vn, vs, vm); 64 typedef tree_common_types<int, __gnu_pbds::null_type, std::less<int>, __gnu_pbds::tree_order_statistics_node_update>::performance_tl tl_t; 65 tl_t tl; 66 __gnu_cxx::typelist::apply(tst, tl); 67 } 68 69 { 70 typedef tree_order_statistics_test<false> test_t; 71 test_t tst(vn, vs, vm); 72 typedef native_set<int> native_set_t; 73 tst(native_set_t()); 74 } 75 } 76 catch(...) 77 { 78 std::cerr << "Test failed" << std::endl; 79 return -1; 80 } 81 return 0; 82} 83 84void 85usage() 86{ 87 using namespace std; 88 cerr << "usage: tree_order_statistics_timing_test.out <vn> <vs> <vm>" << 89 endl << endl; 90 91 cerr << "This test checks the performance of order statistics" 92 " in tree based containers. " << endl; 93 cerr << "Specifically, it does the following:" << endl; 94 cerr << "* Creates a tree" << endl; 95 cerr << "* Inserts integers into the tree" << endl; 96 cerr << "* Checks the order-statistics of each entry in the tree" << endl; 97 cerr << "* Repeats the above test some times" 98 << endl; 99 100 cerr << endl << endl; 101 102 cerr << "vn = minimum size of the tree" << endl; 103 cerr << "vs = step size of the tree" << endl; 104 cerr << "vm = maximum size of the tree" << endl; 105} 106