stack for at most 100 recursive calls and switch to a non-recursive function
that uses a local std::stack to emulate the call stack.
Benchmarks show the following results:
7 runs on 10,000,000 random in unit circle points
43.67074 : Old implementation
43.91474 : use stack for 100 first call then non-recursive with stack
44.07075 : use stack for 100 first call then non-recursive with vector
44.57079 : Local vector
45.0068 : Local stack
45.87886 : Local fixed size array
46.3829 : Local "home-made" small vector
53.41534 : Thread-local vector
This commit also updates the respective mock-headers when the
corresponding .tex documentation has changed. This has been the case for:
AABB_tree/doc_tex/AABB_tree_ref/AABBGeomTraits.tex
AABB_tree/doc_tex/AABB_tree_ref/AABBTraits.tex
AABB_tree/doc_tex/AABB_tree_ref/AABB_traits.tex
Mesh_3/doc_tex/Mesh_3_ref/parameters_features.tex
Mesh_3/doc_tex/Mesh_3_ref/parameters_no_features.tex
Number_types/doc_tex/NumberTypeSupport_ref/Interval_nt.tex
Number_types/doc_tex/NumberTypeSupport_ref/Lazy_exact_nt.tex
Spatial_searching/doc_tex/Spatial_searching_ref/Search_traits_2.tex
Spatial_searching/doc_tex/Spatial_searching_ref/Search_traits_3.tex
Triangulation_2/doc_tex/Triangulation_2_ref/Constrained_Delaunay_triangulation_2.tex
That is a followup-to my commit last year:
| ------------------------------------------------------------------------
| r63198 | lrineau | 2011-04-28 19:45:22 +0200 (Thu, 28 Apr 2011) | 5 lines
|
| Try to fix my last revision about cmake_policy, with CMake-2.6.x
|
| CMake gives an error if one tries to use cmake_policy(VERSION x.y.z) if
| x.y.z is greater than the current CMake version.
|
| ------------------------------------------------------------------------
The following check:
if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" VERSION_GREATER 2.6)
is useless just after a call to:
cmake_minimum_required(VERSION 2.6.2)
The script used to fix that was:
#!/usr/bin/env perl
$replacement=<<'END';
if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}" VERSION_GREATER 2.8.3)
cmake_policy(VERSION 2.8.4)
else()
cmake_policy(VERSION 2.6)
endif()
END
while(<>) {
if(/if\("\${CMAKE_MAJOR_VERSION}.\${CMAKE_MINOR_VERSION}" VERSION_GREATER 2.6\)/) {
while(<>) {
if(/^endif\(\)/) {
print "$replacement";
while(<>) {
print;
}
exit 0
}
}
}
print;
}
removed almost all occurenced (missing UseFiles). While
doing so, some CMakeLists.txt could also be simplified. In fact
many more CMakeLists.txt can be simplified, in one of two ways:
1) add external libs to CGAL_3RD_PARTY_LIBRARIES and
2) call cgal_create_single_source_program
-Wunused-local-typedefs is a new warning flag of gcc-4.7, and it will enabled
by -Wall since gcc-4.8 (not yet released).
The fix is a big set of removals of unused typedefs (or comments, or moves,
depending on the context).
The Constraint_hierarchy is now templated by T, an anonymous type (that is
a Vertex_handle when the constraint hierarchy is used in Ct_plus_2), and a
Compare operator, that have a comparison member function:
bool operator()(T, T);
In Ct_plus_2, the Compare operator passed to the Constraint_hierarchy
compares the vertices with a Less_xy_2, implemented by Less_x_2, and
Less_y_2.
The test test/Triangulation_2/include/CGAL/_test_cls_hierarchy_2.h has been
tweaked, to check that the type T passed in the hierarchy no longer needs
to have a point() member function, as it was before May 2010 (when GF has
determinized the Cdt_plus_2 using too simple patch).
features/doxy-pmoeller and add changes for ccRequires on top of it.
ATTN: This changeset should be unmerged before the whole branch goes
back into next.
The condition is now to be convertible to the point type, pair<point,info>,...
This was the behavior before the insert-by-range-with-info methods were
introduced.
There was a performance degradation between CGAL-3.7 and CGAL-3.8, when
Triangulation_2 is used with EPEC. This patch fixes the issue. Using a
functor that is specialized for EPEC, in inexact_orientation, to_double is
not called on p.x() but on p.approx().x().
I choose this solution since making the container global variable of
the class penalize classes that do not use remove functions.
The overhead introduced is small (less than 2-3% of the total remove time).
We can now write:
\begin{ccDeprecated}
...
\end{ccDeprecated}
or
\begin{ccDeprecated}[3.8]
...
\end{ccDeprecated}
The optional argument is not used, for the moment.
That is *not yet* documented.
Triangulation_euclidean_traits_xy_3.tex is a test case.
We declare
cmake_minimum_required(VERSION 2.6.2)
but we also use
cmake_policy(VERSION 2.8.4)
to declare that our CMake scripts are OK with all the defaults of CMake policies
as of CMake-2.8.4. That shuts down the warnings of CMake-2.8.4.
That way, we no longer need any declaration of specific policies.
Those two lines must be present and maintained in all our CMakeLists.txt
files (the one for the libraries, and also the one for examples and demos,
and maybe tests).
The documentation of CGAL says that the minimal version of CMake must be
CMake-2.6.2.
- change cmake_minimum_required to VERSION 2.6.2
- no longer any need for the policy CMP0003 (was for 2.4.x)
- no longer any need for CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS (was for 2.4)
function (not with all compilers, but at least with g++-4.4).
I have a very nasty test case where list_edges.size is more than
700000. With a quadratic function, mmy cruncher computer was not even able
to insert *one* constraint in half a day.
- Remove also the unused variable vb, and the initialization of tempo
(which is re-initialized a second time later, without using its first
value).
| ------------------------------------------------------------------------
| r59165 | afabri | 2010-10-11 15:27:39 +0200 (Mon, 11 Oct 2010) | 1 line
| Changed paths:
| M /trunk/Triangulation_2/include/CGAL/Triangulation_euclidean_traits_xy_3.h
| M /trunk/Triangulation_2/include/CGAL/Triangulation_euclidean_traits_xz_3.h
| M /trunk/Triangulation_2/include/CGAL/Triangulation_euclidean_traits_yz_3.h
|
| Use the renamed class which now is in the Kernel package
| ------------------------------------------------------------------------
| r59159 | afabri | 2010-10-11 15:14:31 +0200 (Mon, 11 Oct 2010) | 1 line
| Changed paths:
| D /trunk/Triangulation_2/include/CGAL/internal/Triangulation_euclidean_traits_projected_3.h
|
| Move implementation of Projection_traits from Triangulation_2 to Kernel
| ------------------------------------------------------------------------
Now the work is in a branch.