void run_test(size_t min_size, size_t max_size) {
  time_t now = time(0);
  std::cout << "Iterating over " << type_description(T(0))
            << " from " << min_size << " up to " << max_size
            << " elements at: " << asctime(localtime(&now));

  std::vector<const char*> names {
    "   vec",
    "   set",
    "  copy",
    " ratio",
    " h-set",
    "h-copy",
    " ratio"
  };
  std::cout << std::setw(12) << "size";
  for (auto x: names) print_cell(x);
  std::cout << std::endl;

  std::vector<T> vec(max_size);
  random_iota(begin(vec), end(vec));
  for (size_t array_size(min_size); array_size <= max_size; array_size *= 2) {
    const size_t n = (max_size / array_size);
    auto last = begin(vec) + array_size;

    std::cout << std::setw(12) << array_size;

    time_copy_vector(begin(vec), last, n, max_size);
    time_copy_container<std::set<T>>(begin(vec), last, n, max_size);
    time_copy_container<std::unordered_set<T>>(begin(vec), last, n, max_size);
    std::cout << std::endl;
  }
}
Пример #2
0
int main()
{
	std::vector<int> vec( 100 );
	random_iota( vec.begin(), vec.end() );
	list_pool<int> pool;
	list_pool<int>::iterator nil( pool );
	list_pool<in2t>::iterator list = generate_list( vec.begin(), vec.end(), nil );
	print_range( list, nil );
	list = mergesort_linked( list, nil, std::less<int>() );
	print_range( list, nil );
}