Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] Re: squared_distance performance

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] Re: squared_distance performance


Chronological Thread 
  • From: Philipp Moeller <>
  • To:
  • Subject: Re: [cgal-discuss] Re: squared_distance performance
  • Date: Thu, 04 Oct 2012 19:13:13 +0200
  • Organization: GeometryFactory

topotun
<>
writes:

> Hello Sebastien.
>
> The code is quite simple - just a combination of
> /AABB_polyhedron_facet_distance_example.cpp /and /polyhedron2vrml.cpp/.
> Again, I wanted to investigate the performance of the distance queries
> before I augment a much larger project with this functionality. The compiler
> is VS2010, no optimization, and I’ve tried both the release and the debug
> versions – the relative performance of /squared_distance /w/respect to the
> other two functions remains the same.

What do you mean by "no optimization" and "Release"? Did you build in
Release mode with optimizations explicitly turned off? If so, your
results are not worth anything.

Did you really just benchmark one function call? This isn't very
useful. A meaningful benchmark should at least run for a few minutes to
equalize caching results and use randomized input.

Anyway, if you could expand on the current benchmark and address some of
the problems, you are welcome. Can you also please include the complete
source? The choice of number types and kernels can be really crucial.

> int main() {
>
> double timer_start = 0.0;
> double timer_tree = 0.0;
> double timer_squared_distance = 0.0;
> double timer_closest_point = 0.0;
> double timer_closest_point_and_primitive = 0.0;
>
> Polyhedron polyhedron;
> const char* input_filename = "C:/Users/dvd11003/Desktop/CDL/test
> part/off/mushroom.off";
> std::ifstream stream(input_filename);
> stream >> polyhedron;
> std::cout << "\n "<<polyhedron.size_of_vertices()<<std::endl;
>
> //---------- AABB distance check ----------------//
> // constructs AABB tree and computes internal KD-tree
> // data structure to accelerate distance queries
> timer_start = omp_get_wtime();
> Tree tree(polyhedron.facets_begin(),polyhedron.facets_end());
> tree.accelerate_distance_queries();
> timer_tree = omp_get_wtime() - timer_start;
> std::cout << "Tree constructed in " << timer_tree << std::endl;
>
> // query point
> Point query(100.0, 56.0, 100.0);
>
> // computes squared distance from query
> timer_start = omp_get_wtime();
> FT sqd = tree.squared_distance(query);
> timer_squared_distance = omp_get_wtime() - timer_start;
> std::cout << "squared distance: " << sqrt(sqd) << " in " <<
> timer_squared_distance << std::endl;
>
> // computes closest point
> timer_start = omp_get_wtime();
> Point closest = tree.closest_point(query);
> timer_closest_point = omp_get_wtime() - timer_start;
> std::cout << "closest point: " << closest << " in " <<
> timer_closest_point << std::endl;
>
> // computes closest point and primitive id
> timer_start = omp_get_wtime();
> Point_and_primitive_id pp = tree.closest_point_and_primitive(query);
> timer_closest_point_and_primitive = omp_get_wtime() - timer_start;
> std::cout << "closest point: " << pp.first << " in " <<
> timer_closest_point_and_primitive << std::endl;
> Polyhedron::Face_handle f = pp.second; // closest primitive id
> //---------- end AABB distance check ----------------//
>
> return EXIT_SUCCESS;
> }
>
>
>
> --
> View this message in context:
> http://cgal-discuss.949826.n4.nabble.com/squared-distance-performance-tp4655960p4655972.html
> Sent from the cgal-discuss mailing list archive at Nabble.com.

--
Philipp Moeller
GeometryFactory



Archive powered by MHonArc 2.6.18.

Top of Page