4 // Copyright (c) 2003 Peter Dimov
6 // Distributed under the Boost Software License, Version 1.0. (See
7 // accompanying file LICENSE_1_0.txt or copy at
8 // http://www.boost.org/LICENSE_1_0.txt)
11 #include <boost/shared_ptr.hpp>
17 // sp_collector.cpp exported functions
19 std::size_t find_unreachable_objects(bool report);
20 void free_unreachable_objects();
25 boost::shared_ptr<X> p;
30 std::cout << "Calling find_unreachable_objects:\n";
32 std::clock_t t = std::clock();
34 std::size_t n = find_unreachable_objects(false);
38 std::cout << n << " unreachable objects.\n";
39 std::cout << " " << static_cast<double>(t) / CLOCKS_PER_SEC << " seconds.\n";
44 std::cout << "Calling free_unreachable_objects:\n";
46 std::clock_t t = std::clock();
48 free_unreachable_objects();
52 std::cout << " " << static_cast<double>(t) / CLOCKS_PER_SEC << " seconds.\n";
57 std::vector< boost::shared_ptr<X> > v1, v2;
59 int const n = 256 * 1024;
61 std::cout << "Filling v1 and v2\n";
63 for(int i = 0; i < n; ++i)
65 v1.push_back(boost::shared_ptr<X>(new X));
66 v2.push_back(boost::shared_ptr<X>(new X));
71 std::cout << "Creating the cycles\n";
73 for(int i = 0; i < n - 1; ++i)
82 std::cout << "Resizing v2 to size of 1\n";
87 std::cout << "Clearing v2\n";
92 std::cout << "Clearing v1\n";