Boost logo

Boost-Commit :

From: mariano.consoni_at_[hidden]
Date: 2008-06-20 08:52:34


Author: mconsoni
Date: 2008-06-20 08:52:33 EDT (Fri, 20 Jun 2008)
New Revision: 46554
URL: http://svn.boost.org/trac/boost/changeset/46554

Log:

- Remove test working.
- Removed debug cerr.
- Random test for rTree.

Added:
   sandbox/SOC/2008/spacial_indexing/libs/spatial_index/test/random_test_rtree.cpp (contents, props changed)
Text files modified:
   sandbox/SOC/2008/spacial_indexing/boost/spatial_index/rtree.hpp | 12 ++++++------
   sandbox/SOC/2008/spacial_indexing/boost/spatial_index/rtree_leaf.hpp | 4 +---
   sandbox/SOC/2008/spacial_indexing/boost/spatial_index/rtree_node.hpp | 2 +-
   sandbox/SOC/2008/spacial_indexing/libs/spatial_index/test/Jamfile | 1 +
   sandbox/SOC/2008/spacial_indexing/libs/spatial_index/test/performance_test_rtree.cpp | 25 +++++++++++++++++--------
   5 files changed, 26 insertions(+), 18 deletions(-)

Modified: sandbox/SOC/2008/spacial_indexing/boost/spatial_index/rtree.hpp
==============================================================================
--- sandbox/SOC/2008/spacial_indexing/boost/spatial_index/rtree.hpp (original)
+++ sandbox/SOC/2008/spacial_indexing/boost/spatial_index/rtree.hpp 2008-06-20 08:52:33 EDT (Fri, 20 Jun 2008)
@@ -48,7 +48,7 @@
         l->remove(k);
 
         if(l->elements() < m_) {
- std::cerr << "Few elements in Node." << std::endl;
+// std::cerr << "Few elements in Node." << std::endl;
 
           q_leaves = l->get_leaves();
 
@@ -71,7 +71,7 @@
 
 
         for(typename std::vector<std::pair<geometry::box<Point>, Value> >::const_iterator it = s.begin(); it != s.end(); ++it) {
- std::cerr << "Inserting " << it->second << std::endl;
+// std::cerr << "Inserting " << it->second << std::endl;
             insert(it->first, it->second);
         }
 
@@ -81,7 +81,7 @@
           root_->set_root();
         }
 
- std::cerr << "Reinserting leaves " << q_leaves.size() << std::endl;
+// std::cerr << "Reinserting leaves " << q_leaves.size() << std::endl;
 
         for(typename rtree_leaf<Point,Value>::leaves_map::const_iterator it = q_leaves.begin(); it != q_leaves.end(); ++it) {
           insert(it->first, it->second);
@@ -203,7 +203,7 @@
 
     void condense_tree(const boost::shared_ptr<rtree_node<Point,Value> > &l, typename rtree_node<Point,Value>::node_map &q_nodes)
     {
- std::cerr << "Condensing tree." << std::endl;
+// std::cerr << "Condensing tree." << std::endl;
 
       if(l->is_root()) {
         // if it's the root we are done
@@ -219,10 +219,10 @@
           return;
         }
 
- std::cerr << "condense_node: underfull node (" << parent.get() << ")" << std::endl;
+// std::cerr << "condense_node: underfull node (" << parent.get() << ")" << std::endl;
 
         typename rtree_node<Point,Value>::node_map this_nodes = parent->get_nodes();
- std::cerr << "Storing nodes (" << this_nodes.size() << ")" << std::endl;
+// std::cerr << "Storing nodes (" << this_nodes.size() << ")" << std::endl;
         for(typename rtree_node<Point,Value>::node_map::const_iterator it = this_nodes.begin(); it != this_nodes.end(); ++it) {
           q_nodes.push_back(*it);
         }

Modified: sandbox/SOC/2008/spacial_indexing/boost/spatial_index/rtree_leaf.hpp
==============================================================================
--- sandbox/SOC/2008/spacial_indexing/boost/spatial_index/rtree_leaf.hpp (original)
+++ sandbox/SOC/2008/spacial_indexing/boost/spatial_index/rtree_leaf.hpp 2008-06-20 08:52:33 EDT (Fri, 20 Jun 2008)
@@ -106,14 +106,12 @@
 
       for(typename leaves_map::iterator it = nodes_.begin(); it != nodes_.end(); ++it) {
         if(it->first.min() == k.min() && it->first.max() == k.max()) {
- std::cerr << "Erasing node." << std::endl;
+// std::cerr << "Erasing node." << std::endl;
           nodes_.erase(it);
           return;
         }
       }
       std::cerr << "remove: node not found" << std::endl;
- print();
- std::cerr << "remove: node not found" << std::endl;
     }
 
 

Modified: sandbox/SOC/2008/spacial_indexing/boost/spatial_index/rtree_node.hpp
==============================================================================
--- sandbox/SOC/2008/spacial_indexing/boost/spatial_index/rtree_node.hpp (original)
+++ sandbox/SOC/2008/spacial_indexing/boost/spatial_index/rtree_node.hpp 2008-06-20 08:52:33 EDT (Fri, 20 Jun 2008)
@@ -146,7 +146,7 @@
     {
       for(typename node_map::iterator it = nodes_.begin(); it != nodes_.end(); ++it) {
         if(it->first.min() == k.min() && it->first.max() == k.max()) {
- std::cerr << "Erasing node." << std::endl;
+// std::cerr << "Erasing node." << std::endl;
           nodes_.erase(it);
           return;
         }

Modified: sandbox/SOC/2008/spacial_indexing/libs/spatial_index/test/Jamfile
==============================================================================
--- sandbox/SOC/2008/spacial_indexing/libs/spatial_index/test/Jamfile (original)
+++ sandbox/SOC/2008/spacial_indexing/libs/spatial_index/test/Jamfile 2008-06-20 08:52:33 EDT (Fri, 20 Jun 2008)
@@ -16,5 +16,6 @@
 run simple_test_rtree.cpp ;
 run custom_point_test.cpp ;
 run random_test.cpp ;
+run random_test_rtree.cpp ;
 run performance_test.cpp ;
 run performance_test_rtree.cpp ;

Modified: sandbox/SOC/2008/spacial_indexing/libs/spatial_index/test/performance_test_rtree.cpp
==============================================================================
--- sandbox/SOC/2008/spacial_indexing/libs/spatial_index/test/performance_test_rtree.cpp (original)
+++ sandbox/SOC/2008/spacial_indexing/libs/spatial_index/test/performance_test_rtree.cpp 2008-06-20 08:52:33 EDT (Fri, 20 Jun 2008)
@@ -84,8 +84,8 @@
   std::vector< geometry::point_xy<double> > points = read_data();
 
   // -- wait to check memory
-// std::cerr << "check memory --> After Reading Data." << std::endl;
-// sleep(5);
+ // std::cerr << "check memory --> After Reading Data." << std::endl;
+ // sleep(5);
   // -- wait to check memory
 
   // start time
@@ -117,8 +117,8 @@
       std::cerr << "Insertion time: " << time(NULL) - start << " seconds." << std::endl;
 
       // -- wait to check memory
-// std::cerr << "check memory --> After Building Index." << std::endl;
-// sleep(5);
+ // std::cerr << "check memory --> After Building Index." << std::endl;
+ // sleep(5);
       // -- wait to check memory
 
       // search
@@ -152,11 +152,20 @@
 
 
       std::cerr << " --> removal tests" << std::endl;
+ for(unsigned int j=0; j < find_count/1000; j++) {
+ q->remove(geometry::box<geometry::point_xy<double> >(search_positions[j], search_positions[j]));
+// std::cerr << "Elements: " << q->elements() << std::endl;
+ }
+ std::cerr << std::endl;
 
-
+ std::cerr << " --> requery test" << std::endl;
+ start = time(NULL);
+ for(unsigned int j=0; j < find_count/1000; j++) {
+ unsigned int i = q->find(search_positions[j]);
+// std::cerr << "Prev. Value: " << search_data[j] << std::endl;
+ BOOST_CHECK_EQUAL(i, 0u);
+ }
+ std::cerr << "Retrieve time: " << time(NULL) - start << " seconds." << std::endl;
 
       return 0;
 }
-
-
-

Added: sandbox/SOC/2008/spacial_indexing/libs/spatial_index/test/random_test_rtree.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/spacial_indexing/libs/spatial_index/test/random_test_rtree.cpp 2008-06-20 08:52:33 EDT (Fri, 20 Jun 2008)
@@ -0,0 +1,98 @@
+// Copyright 2008 Federico J. Fernandez.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+#include <boost/spatial_index.hpp>
+
+#include <boost/test/included/test_exec_monitor.hpp>
+#include <boost/shared_ptr.hpp>
+
+#include <vector>
+#include <string>
+
+
+#include <sys/time.h>
+
+#define MAX_X 2000.0
+#define MAX_Y 2000.0
+
+
+double drandom(unsigned int upper_bound)
+{
+ double r; /* random value in range [0,1) */
+ long int M; /* user supplied upper boundary */
+
+ struct timeval tv;
+ struct timezone tz;
+ gettimeofday(&tv, &tz);
+ srand(tv.tv_usec);
+
+ M = upper_bound; /* Choose M. Upper bound */
+ r = ( (double)rand() / ((double)(RAND_MAX)+(double)(1)) );
+
+ return r * M;
+}
+
+
+int test_main(int, char* [])
+{
+ // data and indexed points
+ std::vector<unsigned int> ids;
+ std::vector<geometry::point_xy<double> > points;
+
+ // plane
+ geometry::box<geometry::point_xy<double> > plane(geometry::point_xy<double>(0.0, 0.0), geometry::point_xy<double>(MAX_X, MAX_Y));
+
+ // number of points
+ const unsigned int points_count = 500;
+
+ // number of points to find on the search phase
+ const unsigned int find_count = 50;
+
+ boost::shared_ptr< boost::spatial_index::spatial_index< geometry::point_xy<double> , unsigned int > >
+ q(new boost::spatial_index::rtree<geometry::point_xy<double>, unsigned int>(plane, 8, 4));
+
+ // generate random data
+ for(unsigned int i = 0; i < points_count; i++) {
+ double x = drandom((int) MAX_X);
+ double y = drandom((int) MAX_Y);
+
+ ids.push_back(i);
+ points.push_back(geometry::point_xy<double>(x, y));
+
+ // std::cerr << "insert " << i << " -> (" << x << ", " << y << ")" << std::endl;
+ }
+
+ // insert data
+ std::cerr << " --> bulk insert" << std::endl;
+ // std::vector<unsigned int>::iterator b, e;
+ // b = ids.begin();
+ // e = ids.end();
+ q->bulk_insert(ids, points);
+
+ // search
+ std::vector<geometry::point_xy<double> > search_positions;
+ std::vector<unsigned int> search_data;
+
+ // compute random positions to do the searches, store the data
+ for(unsigned int j=0; j < find_count; j++) {
+ unsigned int pos = (int) drandom(points_count);
+ search_positions.push_back(points[pos]);
+ search_data.push_back(pos);
+ }
+
+ // search data and compare
+ for(unsigned int j=0; j < find_count; j++) {
+ unsigned int i = q->find(search_positions[j]);
+ std::cout << search_data[j]
+ << " - found in (" << geometry::get<0>(search_positions[j]) << "," << geometry::get<1>(search_positions[j])
+ << ") --> " << i << std::endl;
+
+ // check if the retrieved data is equal to the stored data
+ BOOST_CHECK_EQUAL(i, search_data[j]);
+ }
+
+ return 0;
+}


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk